批量删除多个管理员账号(Win7)
Deleting multiple admin accounts in Batch ( Win7 )
我在尝试使用 net localgroups 删除所有管理员帐户(除了 2 个 specyfic)时遇到了很大的问题。问题是没有 AND 运算符,所以必须用更难的方法来完成。
for /F "tokens=*" %%G in ('net localgroup administrators') Do (
If %%G == Administrator (goto:ex)
If %%G == MWAdmin (goto:ex)
net localgroup administrators %%G /delete
:ex)
您的问题所在行:
:ex)
这对批处理没有意义,标签不能在代码块中,因为它会破坏块并且批处理会因语法错误而放弃。
您可以通过使用 call
检查块外的帐户名来解决此问题;因为在 call
之后使用 goto :eof
返回到 call
,因此允许在 for 循环中离开和返回到它离开的地方。
for /f "tokens=*" %%G in ('net localgroup administrators') do (
call :checkName "%%~G"
)
:: If name matches if, go back to for loop, else del.
:checkName
if "%~1" == "Administrator" goto :eof
if "%~1" == "MWAdmin" goto :eof
net localgroup administrators "%~1" /delete
goto :eof
以防万一,让我们突出显示:
call :label "%variable%"
使用这个意味着当它到达:label
时,你可以使用%1
来获得%variable%
的传递值,并且~
可以添加%~1
删除引号。这主要用于在 for 循环之外获取 %%X
的值以便于处理。
或者在for循环中使用neq
和嵌套的neq
方法;
for /f "tokens=*" %%G in ('net localgroup administrators') do (
if "%%~G" neq "Administrator" (
if "%%~G" neq "MWAdmin" (
net localgroup administrators %%G /delete
)
)
)
请注意,我将 %%G
改成了 %%~G
,并在 Administrator
和 MWAdmin
周围添加了引号,这是为了稳定性,以防将来的名称导致语法错误.
我在尝试使用 net localgroups 删除所有管理员帐户(除了 2 个 specyfic)时遇到了很大的问题。问题是没有 AND 运算符,所以必须用更难的方法来完成。
for /F "tokens=*" %%G in ('net localgroup administrators') Do (
If %%G == Administrator (goto:ex)
If %%G == MWAdmin (goto:ex)
net localgroup administrators %%G /delete
:ex)
您的问题所在行:
:ex)
这对批处理没有意义,标签不能在代码块中,因为它会破坏块并且批处理会因语法错误而放弃。
您可以通过使用 call
检查块外的帐户名来解决此问题;因为在 call
之后使用 goto :eof
返回到 call
,因此允许在 for 循环中离开和返回到它离开的地方。
for /f "tokens=*" %%G in ('net localgroup administrators') do (
call :checkName "%%~G"
)
:: If name matches if, go back to for loop, else del.
:checkName
if "%~1" == "Administrator" goto :eof
if "%~1" == "MWAdmin" goto :eof
net localgroup administrators "%~1" /delete
goto :eof
以防万一,让我们突出显示:
call :label "%variable%"
使用这个意味着当它到达:label
时,你可以使用%1
来获得%variable%
的传递值,并且~
可以添加%~1
删除引号。这主要用于在 for 循环之外获取 %%X
的值以便于处理。
或者在for循环中使用neq
和嵌套的neq
方法;
for /f "tokens=*" %%G in ('net localgroup administrators') do (
if "%%~G" neq "Administrator" (
if "%%~G" neq "MWAdmin" (
net localgroup administrators %%G /delete
)
)
)
请注意,我将 %%G
改成了 %%~G
,并在 Administrator
和 MWAdmin
周围添加了引号,这是为了稳定性,以防将来的名称导致语法错误.