'if statement'与PSEXEC一起使用errorlevel

时间:2014-03-26 14:20:05

标签: batch-file cmd psexec

我们的客户拥有4种不同的本地管理员密码的计算机。我想在EXE文件中放置一个静默批处理文件,以便安装一个软件的用户无法轻易读取批处理文件。不安全,但这是我们目前需要它的方式。

我正在使用PSEXEC并希望脚本尝试使用每个密码运行程序,然后在安装程序成功启动后终止脚本 - 而不尝试其他密码。例如,如果第二个密码正确,那么PSEXEC应该只运行两次。

这是脚本。目前正在尝试所有4个密码,即使第二个密码正确并且程序安装程序启动。

@ECHO OFF
cd %cd%


echo 1
psexec -user administrator -p Password1 -i -d -c -f "FirefoxSetup28.0.exe" /accepteula 2>>log1.txt
find /i "unknown user name or bad password" log1.txt > nul


if errorlevel=0 (

del log1.txt /F
cls
ver > nul
echo 2
psexec -user administrator -p Password2 -i -d -c -f "FirefoxSetup28.0.exe" /accepteula 2>>log2.txt
find /i "unknown user name or bad password" log2.txt > nul

if errorlevel=0 (


del log2.txt /F
cls
ver > nul
echo 2
psexec -user administrator -p Password3 -i -d -c -f "FirefoxSetup28.0.exe" /accepteula 2>>log3.txt
find /i "unknown user name or bad password" log3.txt > nul


if errorlevel=0 (

del log3.txt /F
cls
ver > nul
echo 3
psexec -user administrator -p Password4 -i -d -c -f "FirefoxSetup28.0.exe" /accepteula 2>>log4.txt
find /i "unknown user name or bad password" log4.txt > nul

if errorlevel=0 (

del log4.txt /F
echo Unable to install program
pause

) else (

del log4.txt /F
break
exit

)

) else (

del log3.txt /F
break
exit

)


) else (

del log2.txt /F
break
exit

)


) else (

del log1.txt /F
break
exit


)

exit

以下是log1.txt文件的示例:

PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com

Logon failure: unknown user name or bad password.

PsExec could not start FirefoxSetup28.0.exe:

1 个答案:

答案 0 :(得分:1)

if语句的语法是if string1==string2(还有其他比较运算符......)

errorlevel永远不会等于0,因为字符串" errorlevel"和" 0"比较。

您需要的语法是

if errorlevel 1 (dothisthing if errorlevel is 1 or greater) else (dothatif errorlevel is less than 1)

if not errorlevel 1 (dothisif errorlevel is less than 1)

此外,break在Windows下无效(请参阅docco提示中的break /?