New*_*ies 7 windows cmd batch-file
我正在尝试创建这样的批处理字符串: > abcd_
我有一个名为soeid的变量,其值为abcd.所以这就是我正在做的,但它不起作用.
set soeid=abcd
set "val1=>"
set "val2=_"
set "str=%val1%%soeid%%val2%"
echo %str%
Run Code Online (Sandbox Code Playgroud)
dbe*_*ham 13
我确定它工作得很好.为了证明这一点,SET STR
在定义值后添加,您将看到正确的值.
您遇到的问题是当您尝试回显该值时,正在执行的行变为:echo >abcd_
.在>
没有加引号或转义,所以它是简单地把ECHO的输出中不带任何参数,并将其重定向到一个名为"abcd_"文件
如果您不介意看到引号,那么将您的行更改为echo "%str%"
,它将起作用.
另一个选项是启用和使用延迟扩展(我假设这是一个批处理脚本代码,而不是在命令行上执行)
setlocal enableDelayedExpansion
set soeid=abcd
set "val1=>"
set "val2=_"
set "str=%val1%%soeid%%val2%"
echo !str!
Run Code Online (Sandbox Code Playgroud)
正常%var%
扩展发生在解释器解析该行的早期.延迟!var!
扩展发生在执行之前的末尾.在中间的某处检测到重定向.这就是正常扩展不起作用的原因 - 解释器看到扩展的>
字符并将其解释为输出重定向操作符.延迟扩展>
会将解析器中的字符隐藏起来,直到解析重定向为止.
有关延迟扩展的更多信息,请SET /?
从命令行键入并从以"最后,支持延迟环境变量扩展..."开头的段开头读取.