我在跑步时遇到了麻烦!var!此处描述的示例广告http://ss64.com/nt/delayedexpansion.html
而不是像示例所描述的预期变量内容输出,我得到文字“bang V A R bang”输出,任何想法?
C:\>Setlocal EnableDelayedExpansion
C:\>Set _var=first
C:\>Set _var=second& Echo %_var% !_var!
first !_var!
感谢。
答案 0 :(得分:2)
您将收到意外结果,因为您在命令提示符下发出命令。通过将以下命令放在扩展名为.bat的文件中创建批处理文件,然后运行批处理文件。
@echo off
Setlocal EnableDelayedExpansion
Set _var=first
Set _var=second& Echo %_var% !_var!
例如,如果我创建了一个名为delayedexp.bat的批处理文件,其中包含上述内容,我会在运行时看到以下内容:
C:\Users\JDoe\Documents\>delayedexp
first second
答案 1 :(得分:1)
setlocal
仅适用于命令脚本的范围:
help setlocal
答案 2 :(得分:0)
如果可以访问cmd调用的参数,可以设置参数/v。必须是第一。并使用!代替 % 用于变量。
%windir%\system32\cmd.exe /v /c set a=10&echo a=!a!&echo My Path is %CD%&pause
例如,您可以通过这种方式直接在 Windows 快捷方式中获取俄罗斯-法国格式的日期,由于其加倍,因此不可能使用简单的百分比。在带有 /v 参数的 std 查询中,百分比和感叹号都可以正常工作,但单个 % 用于 cicle。
%windir%\system32\cmd.exe /v /c echo off&for /F "tokens=1-6 delims=:., " %A In ("!date! !time!") Do (Echo %A.%B.%C %D:%E:%F)&pause