在批处理文件中声明和使用布尔变量的最佳方法是什么?这是我现在正在做的:
set "condition=true"
:: Some code that may change the condition
if %condition% == true (
:: Some work
)
有没有更好、更“正式”的方法来做这件事?(例如,在Bash中,您只需执行if $condition
,因为true
和false
是它们自己的命令。)
在批处理文件中声明和使用布尔变量的最佳方法是什么?这是我现在正在做的:
set "condition=true"
:: Some code that may change the condition
if %condition% == true (
:: Some work
)
有没有更好、更“正式”的方法来做这件事?(例如,在Bash中,您只需执行if $condition
,因为true
和false
是它们自己的命令。)
set "condition="
并且
set "condition=y"
其中y
可以是任何字符串或数字。
这允许使用if defined
和if not defined
,两者都可在块语句(一系列括号括起来的语句)中使用,以查询标志的运行时状态,而无需使用enabledelayedexpansion
。
例如:
set "condition="
if defined condition (echo true) else (echo false)
set "condition=y"
if defined condition (echo true) else (echo false)
第一个将会回显false
,第二个回显true
%condition%
指的是变量condition
的内容,因此如果condition
的值为y
,则if defined %condition%
将被解释为if defined y
。 - Magooset "condition=true"
:: Some code...
if "%condition%" == "true" (
%= Do something... =%
)
如果有更好的方法,请回答这个问题,我会很乐意接受你的答案。
我想另一个选择是使用“1==1”作为真值。
因此,重复示例:
set condition=1==1
:: some code
if %condition% (
%= Do something... =%
)
true
和false
的值:set true=1==1
set false=1==0
set condition=%true%
:: some code
if %condition% (
%= Do something... =%
)
这对我有效。我怀疑尝试包含引号会使事情复杂化,但是当分配的值没有任何空格时,引号可能是不必要的。
set condition=true
:: Some code that may change the condition
set condition=false
if %condition%==true (
:: Some work
) ELSE (
:: Do something else
)
if defined var
,这样可以在if
、for
和其他括号代码块中工作,而不需要延迟扩展。此外,还可以根据错误级别为零或非零进行条件执行。 - rojo%condition%
有值,那么你就不需要引号;引号只是为了避免语法错误,如果它是空的。 - SomethingDarkset /A
命令执行的算术运算仅管理32位整数,但那并不完全相同... - Aacini