if语句环境变量存在/批处理文件中不存在时

时间:2015-04-01 12:16:03

标签: batch-file

我想检查一下PC中是否设置了某个环境变量。如果是,请执行x,如果不执行y。

我尝试了这些以及它们的一些变体:

如果EXISTS%SIGN%runtest.exe --redirect -l%NAME% ELSE runtest.exe -l%NAME%

如果"%SIGN%" =="" runtest.exe --redirect -l%NAME% ELSE runtest.exe -l%NAME%

在这两种情况下(当环境变量SIGN存在且不存在时)它们都不能很好地工作。有时仅在一个案例中......

请帮忙吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

if exists检查文件。

对于变量do:if defined sign(没有百分号)

答案 1 :(得分:0)

IF Conditionally perform a command

IF DEFINED SIGN (
     runtest.exe --redirect -l %NAME% 
) ELSE (
     runtest.exe -l %NAME%
)

或很快

IF DEFINED SIGN (runtest.exe --redirect -l %NAME%) ELSE (runtest.exe -l %NAME%)

有效语法:

  • 所有)ELSE(必须位于唯一一行,如下所示:) ELSE (

注意

  如果变量包含任何值,

if DEFINED将返回true(即使该值只是一个空格)。

根据上述谓词,IF DEFINED SIGN条件似乎等同于重新制定的测试if NOT "%SIGN%"=="",但它仅在批量中有效,其中%undefined_variable%导致空字符串:

if NOT "%SIGN%"=="" (runtest.exe --redirect -l %NAME%) ELSE (runtest.exe -l %NAME%)

否则,在纯CLI中,%undefined_variable%会产生%undefined_variable%

<强>证明

==>type uv.bat
@echo undefined_variable="%undefined_variable%"

==>uv.bat
undefined_variable=""

==>echo undefined_variable="%undefined_variable%"
undefined_variable="%undefined_variable%"

==>