我在设置 if 块内的值时遇到问题。请考虑以下代码:
\我的工具.bat
@echo off
if not "%adder%" == "" (
set val=%val%;%adder%
) else (
echo please set adder first
)
echo value="%val%"
现在,当我通过 cmd 运行以下命令时:
set adder=a(bc)d
mytool
它给了我错误即
d was unexpected at this time.
另一方面,以下是有效的
set adder=abcd
mytool
对于输出,我希望即使有括号value=";abcd"
也能有类似的行为。 我也试过了adder
这. 但它仅保留批次内变量 val 的变化。
答案1
当值包含括号时,如何在 if 块内设置变量的值?
如果变量值包含括号(
或者)
您需要set
在批处理文件中引用右侧表达式set "val=%val%;%adder%"
测试.cmd:
@echo off
if not "%adder%" == "" (
set "val=%val%;%adder%"
) else (
echo please set adder first
)
echo value=%val%
输出:
C:\test>set val=somevalue
C:\test>set adder=a(bc)d
C:\test>test
value=somevalue;a(bc)d
“因为 val 的值在批处理文件之外不会保留”
不对。
C:\test>set | findstr val
val=somevalue;a(bc)d
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
答案2
我的建议是:
if (condition_TRUE) goto goodbye_parenthesis_BEGIN
goto goodbye_parenthesis_END ----- line when previous condition is FALSE ----
:goodbye_parenthesis_BEGIN ----- line when previous condition is TRUE ----
...
variable treatment
...
:goodbye_parenthesis_END