批处理脚本工作:
@ECHO OFF
SETLOCAL EnableExtensions EnableDelayedExpansion
set dir01a=text 1
set dir02a=text 2
set dir03a=text 3
for %%G in (01 02 03) do echo dir%%Ga =to= !dir%%Ga!
然而,SETLOCAL
命令不会影响当前cmd
情况下,你需要创建新的,见cmd /?
及以下更新。
- 批处理脚本:命令对
SETLOCAL EnableDelayedExpansion
和ENDLOCAL
;
- 命令行:分别对应的命令对
CMD /V:ON /K
和EXIT
。
复制粘贴&旁边代码段开放cmd
窗口:
ECHO OFF
set dir01a=text 1
set dir02a=text 2
set dir03a=text 3
for %G in (01 02 03) do echo dir%Ga =to= !dir%Ga!
cmd /E:ON /V:ON /C for %G in (01 02 03) do @echo dir%Ga =to= !dir%Ga!
ECHO ON >NUL
输出:
==> ECHO OFF
set dir01a=text 1
set dir02a=text 2
set dir03a=text 3
for %G in (01 02 03) do echo dir%Ga =to= !dir%Ga!
dir01a =to= !dir01a!
dir02a =to= !dir02a!
dir03a =to= !dir03a!
cmd /E:ON /V:ON /C for %G in (01 02 03) do @echo dir%Ga =to= !dir%Ga!
dir01a =to= text 1
dir02a =to= text 2
dir03a =to= text 3
ECHO ON >NUL
更新:复制粘贴&下面的代码片段一个开放cmd
窗口(注意,更好的输出可读性时机prompt
和===
命令前缀):
prompt $Q$Q$G$S
echo OFF
=== set "var=OLD_value_d"
=== SETLOCAL EnableDelayedExpansion
=== set "var=NEW_value_d" & echo default expansion %var% !var! & set var
=== echo default expansion %var% !var!
=== ENDLOCAL
=== echo default expansion %var% !var!
=== CMD /V:ON /K
echo OFF
=== set "var=OLD_value_E"
=== set "var=NEW_value_E" & echo Delayed expansion %var% !var! & set var
=== echo Delayed expansion %var% !var!
=== EXIT
=== echo default expansion %var% !var!
=== echo ON >NUL
prompt
输出:
==> prompt $Q$Q$G$S
==> echo OFF
=== set "var=OLD_value_d"
=== SETLOCAL EnableDelayedExpansion
=== set "var=NEW_value_d" & echo default expansion %var% !var! & set var
default expansion OLD_value_d !var!
var=NEW_value_d
=== echo default expansion %var% !var!
default expansion NEW_value_d !var!
=== ENDLOCAL
=== echo default expansion %var% !var!
default expansion NEW_value_d !var!
=== CMD /V:ON /K
==> echo OFF
=== set "var=OLD_value_E"
=== set "var=NEW_value_E" & echo Delayed expansion %var% !var! & set var
Delayed expansion OLD_value_E NEW_value_E
var=NEW_value_E
=== echo Delayed expansion %var% !var!
Delayed expansion NEW_value_E NEW_value_E
=== EXIT
=== echo default expansion %var% !var!
default expansion NEW_value_d !var!
=== echo ON >NUL
==> prompt
它可以在使用时运行:cmd/E:ON/V:ON/C for %% G in(01 02 03)do @echo!dir %% Ga! - 但是如果我想在FOR循环中运行更多的命令,该怎么办? (更多的命令在更多的行上,还有另外的%变量%被用来构造复杂的路径)技术不起作用... –
已经更新:参见'/ K'开关;再次阅读_entire_'cmd/?',请@PeterMaly – JosefZ
谢谢你JosefZ 经过一番捣鼓之后我创建了工作脚本 我回到了我的开始(我在正确的路上) 和魔法很简单 - 增加了两行在脚本开始: setlocal EnableDelayedExpansion setlocal EnableExtensions - 一个问题更多 - 在哪里发布我的脚本来帮助别人? –