你的问题是该行:
:ex)
这是没有意义的批次,标签不能在一个代码块,因为它打破了块和批量放弃由于语法错误。
您可以通过检查与call
块之外的帐户名解决这个问题;如goto :eof
在call
回到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
报价,这是稳定,套内未来的名称将导致语法错误。
这个代码工作,但删除所有的管理员帐户,但管理员,甚至MWAdmin ... – vartier
此外,欢迎堆栈溢出,感谢您的展示尝试并没有居住到详细的细节。将来你可以编辑你的文章来添加错误,而不是留下评论。请记住标记什么解决你的答案与复选标记。 – Bloodied