我在 if 块内设置值时遇到问题。请考虑以下代码:
\mytool.bat
@echo off
if not "%adder%" == "" (
set val=%val%;%adder%
) else (
echo please set adder first
)
echo value="%val%"
Run Code Online (Sandbox Code Playgroud)
现在,当我通过 cmd 运行以下命令时:
set adder=a(bc)d
mytool
Run Code Online (Sandbox Code Playgroud)
它给了我错误即
d was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)
另一方面,以下正在工作
set adder=abcd
mytool
Run Code Online (Sandbox Code Playgroud)
对于输出,value=";abcd"
即使adder有括号,我也希望有类似的行为。
我也尝试过这个。但它只保留批处理内变量 val 的更改。
如果变量值包含括号(或者)需要引用set批处理文件中右侧的表达式set "val=%val%;%adder%"
测试.cmd:
@echo off
if not "%adder%" == "" (
set "val=%val%;%adder%"
) else (
echo please set adder first
)
echo value=%val%
Run Code Online (Sandbox Code Playgroud)
输出:
C:\test>set val=somevalue
C:\test>set adder=a(bc)d
C:\test>test
value=somevalue;a(bc)d
Run Code Online (Sandbox Code Playgroud)
“因为 val 的值不会在批处理文件之外保留”
不对。
C:\test>set | findstr val
val=somevalue;a(bc)d
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3303 次 |
| 最近记录: |