批处理脚本 - 第一个" IF"选择不起作用,休息呢

时间:2016-01-07 22:16:08

标签: batch-file if-statement

我的代码遇到问题。如果我运行该文件并按照提示输入工作站名称然后选择站点1,它会继续打开cmd窗口以执行psexec命令,它不会执行" IF NOT EXIST"对于网站1,但对于其他网站,它回来很好。如果没有文件存在,它将输出到提示符,如果是,则继续输出psexec。知道我做错了什么吗?谢谢。

:MAN
SET /P S=Please enter a workstation name or IP: 
ECHO.
ECHO 1 - Site 1
ECHO 2 - Site 2
ECHO 3 - Site 3
ECHO 4 - Site 4
SET /P D=Select which Site you want to deploy from: 
IF %D%==1 SET D="\\site1\Operations\Sofware\Packages\file.msi"
IF %D%==2 SET D="\\site2\Operations\Sofware\Packages\file.msi"
IF %D%==3 SET D="\\site3\Operations\Sofware\Packages\file.msi"
IF %D%==4 SET D="\\site4\Operations\Sofware\Packages\file.msi"
IF NOT EXIST %D% GOTO MSG

START CMD /K PsExec.exe @%S% -s -h cmd /c msiexec.exe /i "%D%" /qn
PAUSE
GOTO EOF
:MSG
CALL :color 1a "ERROR: MSI PACKAGE DOES NOT EXIST"

3 个答案:

答案 0 :(得分:0)

注意做的可能性:

goto label%D%

您几乎也可以这样做:

set D=\\10.%D%.2.1\Operations\Sofware\Packages\quest.msi

而不是4个IF语句。

答案 1 :(得分:0)

这是我的工作代码,PsExec存在问题,并且没有采用%s%变量,而是将用户输入输出到文本文件并从该文件中读取Psexec。我还编辑了大家的建议。谢谢大家。

:MAN
@ECHO OFF
SET /P S=Please enter a workstation name or IP: 
ECHO %S% >> man.txt
ECHO.
ECHO 1 - Site 1
ECHO 2 - Site 2
ECHO 3 - Site 3
ECHO 4 - Site 4
SET /P D=Select which Branch you want to deploy from: 
IF %D%==1 SET "R=\\site1\Operations\Sofware\Packages\file.msi"
IF %D%==2 SET "R=\\site2\Operations\Sofware\Packages\file.msi"
IF %D%==3 SET "R=\\site3\Operations\Sofware\Packages\file.msi"
IF %D%==4 SET "R=\\site4\Operations\Sofware\Packages\file.msi"
IF NOT EXIST %R% GOTO MSG
START CMD /k "PsExec.exe @man.txt -s -h cmd /c msiexec.exe /i %R% /qn & DEL man.txt"
PAUSE
GOTO MENU
:MSG
CALL :color 1a "ERROR: MSI PACKAGE DOES NOT EXIST"

答案 2 :(得分:-1)

在.bat,.cmd文件中不建议使用

==;我会用EQU