Batch file psexec和netuser的errorlevel
这是我的剧本。我遇到的问题是,它基本上忽略了我的“if errorlevel”,我尝试了各种不同的方法Batch file psexec和netuser的errorlevel,batch-file,Batch File,这是我的剧本。我遇到的问题是,它基本上忽略了我的“if errorlevel”,我尝试了各种不同的方法 for /f %%F in (C:\IPLIST.txt) do ( pstools\psexec.exe \\%%F -u administrator -p password net user administrator password1 if %errorlevel% NEQ 0 goto two :two pstools\psexec.exe \\%%F -u administrato
for /f %%F in (C:\IPLIST.txt) do (
pstools\psexec.exe \\%%F -u administrator -p password net user administrator password1
if %errorlevel% NEQ 0 goto two
:two
pstools\psexec.exe \\%%F -u administrator -p password3 net user administrator password2
)
因此,它通过txt文件列表的IP地址,它改变了本地管理员密码。这两个命令将为它提供不同的身份验证凭据,现在我知道我可以用pspasswd实现这一点,但是“-u-p”开关无法工作。但这是有效的。。如果第一个命令成功并以错误代码0退出,它仍然会为同一IP运行第二个命令。如果第一个命令成功,我希望它忽略该IP的第二个命令。然后继续往下看
这是因为我使用的是网络用户或pstools,这就是为什么它会忽略它
@echo off
for /f %%F in (C:\IPLIST.txt) do (
pstools\psexec.exe \\%%F -u administrator -p password net user administrator password1
if errorlevel 1 pstools\psexec.exe \\%%F -u administrator -p password3 net user administrator password2
if errorlevel 1 pstools\psexec.exe \\%%F -u administrator -p password5 net user administrator password5
echo Rinse and Repeat
)
这很有效。回答了我的问题。谢谢不能在块的中间使用GOTO。它破坏了FOR命令。不理解您使用PSPASSWD的问题。它应该可以正常工作。那么在for循环中使用goto命令是否有解决办法?如果IF命令为TRUE,那么运行PSEXEC而不是尝试使用goto是否更符合逻辑。是否使用了
SETLOCAL ENABLEDELAYEDEXPANSION
和IF!错误等级!NEQ 0
?这不起作用<代码>%errorlevel%位于代码块内,因此需要延迟扩展。如果errorlevel 1相当于“如果%errorlevel%大于0”(如果pstools只返回正的errorlevel值),那么只使用就更简单了@Aacini,谢谢。我写这篇文章的时候我没有思考!
for /f %%F in (C:\IPLIST.txt) do (
pstools\psexec.exe \%%F -u administrator -p password net user administrator password1
if !errorlevel! NEQ 0 pstools\psexec.exe \%%F -u administrator -p password3 net user administrator password2
)