Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file psexec和netuser的errorlevel_Batch File - Fatal编程技术网

Batch file psexec和netuser的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

这是我的剧本。我遇到的问题是,它基本上忽略了我的“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 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
)