我的批处理程序中出现一个奇怪的错误。我认为问题在于启用延迟扩展,但我应用的修复不起作用。这是我的代码:
setlocal ENABLEDELAYEDEXPANSION
for /l %%x in (1, 1, 3) do (
set ff=Firefox_45_0.0_%%x
echo %%x
firefox.exe -CreateProfile "%ff% %homedrive%%homepath%\Desktop\Firefoxes\Profiles\Firefox_45_0.0_%%x"
)
ff 没有任何价值,尽管我使用了延迟扩展。解决办法是什么?
编辑:命令打印到控制台(我不使用@echo off)
C:\Users\Home2\Desktop\Firefoxes\Versions\Firefox_45_0.0>(
set ff=Firefox_45_0.0_1
echo 1
firefox.exe -CreateProfile "!ff! C:\Users\Home2\Desktop\Firefoxes\Profiles\Firefox_45_0.0_1"
)
有趣的是,它实际上按预期执行,尽管它打印了 !ff!在控制台中。
!ff!
修复了这个问题,因为延迟扩展使用感叹号而不是百分号。
延迟扩展模式不会改变扩展百分比,它增加了一种新的、更好的扩展方式。
默认情况下,延迟扩展处于禁用状态。
要在批处理文件中启用它,请使用
setlocal EnableDelayedExpansion
set "var=Hello world"
echo !var!
注意力:
在命令行上输入命令setlocal EnableDelayedExpansion
完全没有效果。
您可以通过启动一个新的 cmd.exe 实例来启用它cmd /v:on
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)