windows cmd enabledelayedexpansion无法正常工作

时间:2015-01-17 20:33:20

标签: windows cmd

我在跑步时遇到了麻烦!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!

感谢。

3 个答案:

答案 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