【问题标题】:Change password for all users accounts in command prompt在命令提示符下更改所有用户帐户的密码
【发布时间】:2013-07-17 17:41:39
【问题描述】:

好的,我需要一个批处理脚本大师来帮助我摆脱我已经支持自己的角落。

我有一个作为系统运行的程序,我想更改出现在网络用户输出中的所有帐户的密码。我不确定如何仅使用命令行或基于 AHK 的脚本来做到这一点。

当我执行 net user 命令时,输出对我来说是这样的:

C:\Users\Resident>net user

User accounts for \\9100BASELINE

-------------------------------------------------------------------------------
Administrator            Guest                    Resident
The command completed successfully.

我需要一些方法来将这里所有帐户(无论是 3 还是 50)的密码更改为我选择的密码。

谁能帮我解决这个问题?在我意识到我不知道如何从那里正则表达式用户名之前,我尝试将每个项目都是一个令牌的 for 循环拍打在一起。

【问题讨论】:

    标签: batch-file command


    【解决方案1】:

    您实际上可以完全使用批处理来做到这一点。

    最简单的方法是列出所有文件夹:

    cd C:\Users
    dir /b /o:n /ad > users.txt
    

    之后,您将使用 for 循环为 Users 目录中的每个用户设置密码,并确保脚本不会尝试为 Public 文件夹设置密码,因为它不是用户.

    看起来像这样:

    for /f %%i in ('type C:\Users\users.txt') do(
    if not %%i==Public (
    net user %%i [Insert Password Here]
    )
    )
    

    从技术上讲,您实际上不必检查额外的非用户文件夹,因为如果 cmd 尝试为非用户文件夹设置密码,它实际上不会导致任何问题。

    【讨论】:

      【解决方案2】:

      我建议使用一点 VBScript 的帮助:

      Set accounts = GetObject("WinNT://.")
      accounts.Filter = Array("user")
      For Each user In accounts
        WScript.Echo user.Name
      Next
      

      将其保存为listusers.vbs 并像这样运行它:

      @echo off
      
      setlocal
      
      set /p "newpw=Enter new password: "
      
      for /f "delims=" %%u in ('cscript //NoLogo C:\path\to\listusers.vbs') do (
        net user "%%u" "%newpw%"
      )
      

      编辑:如果您想从处理中省略特定帐户,您可以将排除列表添加到 VBScript:

      Set exclude = CreateObject("Scripting.Dictionary")
      exclude.CompareMode = vbTextCompare
      exclude.Add "HomeGroupUser$", True
      exclude.Add "otheruser", True
      ...
      
      Set accounts = GetObject("WinNT://.")
      accounts.Filter = Array("user")
      For Each user In accounts
        If Not exclude.Exists(user.Name) Then WScript.Echo user.Name
      Next
      

      或者用findstr过滤listusers.vbs的输出:

      for /f "delims=" %%u in (
        'cscript //NoLogo C:\path\to\listusers.vbs ^| findstr /v /i ^
          /c:HomeGroupUser$ /c:otheruser ...'
      ) do (
        net user "%%u" "%newpw%"
      )
      

      【讨论】:

      • 我唯一担心的是它会抢夺 $homegroup 以及所有其他用户...我真的不在乎,因为我没有任何联网设备。但这对某些人来说可能是一种痛苦。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-05
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2023-01-05
      相关资源
      最近更新 更多