启用延迟扩展不起作用 [英] enable delayed expansion doesn't work

查看:30
本文介绍了启用延迟扩展不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am getting a weird error in my batch program. I think the problem is in enable delayed expansion, but the fix I apply doesn't work. This is my code:

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%DesktopFirefoxesProfilesFirefox_45_0.0_%%x"


)

ff 没有任何价值,尽管我使用了延迟扩展.有什么解决办法?

ff doesn't have any value, although I used delayed expansion. What could be the fix?

命令打印到控制台(我不使用@echo off)

command printed to console (I don't use @echo off)

   C:UsersHome2DesktopFirefoxesVersionsFirefox_45_0.0>(
set ff=Firefox_45_0.0_1
 echo 1
 firefox.exe -CreateProfile "!ff! C:UsersHome2DesktopFirefoxesProfilesFirefox_45_0.0_1"
    )

有趣的是它实际上按预期执行,尽管它打印了 !ff!在控制台中.

What is funny is that it actually performs as expected, although it prints !ff! in the console.

推荐答案

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

!ff! fixes it, as delayed expansion uses exclamation marks instead of percent signs.
Delayed expansion mode doesn't change the percent expansion, it adds a new and better way for expansion.

默认情况下禁用延迟扩展.
要在批处理文件中启用它,请使用

Delayed expansion is disabled by default.
To enable it in a batch file use

setlocal EnableDelayedExpansion
set "var=Hello world"
echo !var!

注意:
在命令行上,命令 setlocal EnableDelayedExpansion 根本没有任何作用.
您可以通过使用 cmd/v:on

这篇关于启用延迟扩展不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆