启用延迟扩展不起作用

问题描述:

我在批处理程序中出现奇怪的错误。我认为问题在于启用延迟扩展,但我应用的修复程序不起作用。这是我的代码:启用延迟扩展不起作用

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!在控制台。

+3

你只能*启用*延迟扩展,但不要*使用*它。延迟变量用'!var!'而不是'%var%'引用。 – Stephan

+0

使用!ff!只是印刷!ff !.是因为我的命令使用引号吗?你如何使用!何时命令需要引号? – brumbrum

+1

使用你的代码,只需用'!ff!'代替'%ff%''对我来说工作正常。如果从字面上显示'!ff!',那应该是一个提示,你没有'setlocal enabledelayedexpansion'。检查你当前的代码。 – Stephan

!ff!修复它,因为延迟扩展使用感叹号而不是百分号。
延迟扩展模式不会改变百分比扩展,它增加了一种新的更好的扩展方式

+0

使用!ff!只是印刷!ff !.是因为我的命令使用引号吗? – brumbrum