启用延迟扩展不起作用
问题描述:
我在批处理程序中出现奇怪的错误。我认为问题在于启用延迟扩展,但我应用的修复程序不起作用。这是我的代码:启用延迟扩展不起作用
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)
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!修复它,因为延迟扩展使用感叹号而不是百分号。
延迟扩展模式不会改变百分比扩展,它增加了一种新的更好的扩展方式
+0
使用!ff!只是印刷!ff !.是因为我的命令使用引号吗? – brumbrum
你只能*启用*延迟扩展,但不要*使用*它。延迟变量用'!var!'而不是'%var%'引用。 – Stephan
使用!ff!只是印刷!ff !.是因为我的命令使用引号吗?你如何使用!何时命令需要引号? – brumbrum
使用你的代码,只需用'!ff!'代替'%ff%''对我来说工作正常。如果从字面上显示'!ff!',那应该是一个提示,你没有'setlocal enabledelayedexpansion'。检查你当前的代码。 – Stephan