我们的客户拥有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:
答案 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 /?
)