批处理文件中的条件语句

Isw*_*rya 9 batch-file

是否可以在批处理脚本中使用条件语句?

例如:

我有两个服务器,S1和S2.当批处理文件在S1中部署时,输出应该在位置L1生成.同样,如果在S2中部署批处理文件,则应在位置L2中生成输出.

我的剧本:

set ComputerName=S1
set RepServer=%ComputerName%
set DBServer=%ComputerName%
set ReportPath="/DEV/Clearviewbilling"
set SharedPath=\\scottvdr1\ClearviewBilling\DEV-TEST
set UserId=-E
set fn=Create_Log.txt

if exist %fn% del %fn%
@echo on

@rem Reports
rs -i "%CD%"\Reports\Create_Sub.rss -s http://%RepServer%/reportserver -v Path=%SharedPath% -v rootpath=%ReportPath% -v DBServer=%DBServer% -t  >>  %fn% 2>&1
Run Code Online (Sandbox Code Playgroud)

但我希望脚本是:

set ComputerName=S1
set RepServer=%ComputerName%
set DBServer=%ComputerName%

If ComputerName=S1
Set SharedPath=//blah/blah
else
Set sharedPath=//some/path

set ReportPath="/DEV/Clearviewbilling"
set UserId=-E
set fn=Create_Log.txt

if exist %fn% del %fn%
@echo on

@rem Reports
rs -i "%CD%"\Reports\Create_Sub.rss -s http://%RepServer%/reportserver -v Path=%SharedPath% -v rootpath=%ReportPath% -v DBServer=%DBServer% -t  >>  %fn% 2>&1   
Run Code Online (Sandbox Code Playgroud)

因此,在部署文件时,将在所需路径中生成报告.但这不起作用.

jeb*_*jeb 17

您使用错误的if-else语法将字符串ComputerName与S1进行比较

这应该工作

if "%ComputerName%"=="S1" (
    Set "SharedPath=//blah/blah"
) else (
    Set "sharedPath=//some/path"
)
Run Code Online (Sandbox Code Playgroud)