Ric*_*ard 2 windows batch-file delayedvariableexpansion
好吧,我变得疯狂,我不知道还能做什么,我已经尝试了几件事,但没有任何工作.
看看这个示例代码(test.cmd):
setlocal enabledelayedexpansion enableextensions
set VAR=before
if "%VAR%" == "before" (
set VAR=after;
if "%VAR%" == "after" @echo If you see this, it worked
)
Run Code Online (Sandbox Code Playgroud)
这是生成的输出:
D:\>ver
Microsoft Windows [Version 6.1.7600]
D:\>test.cmd
D:\>setlocal enabledelayedexpansion enableextensions
D:\>set VAR=before
D:\>if "before" == "before" (
set VAR=after;
if "before" == "after"
)
D:\>
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?
这只是一个测试,我需要的代码也使用变量并且需要延迟扩展,但是这个简单的测试不起作用,另一个也不会工作(我试过,我最后得到一个简单的例子来测试它是否有效).
编辑:新代码和输出:
TEST.CMD:
@echo off
setlocal enabledelayedexpansion enableextensions
set VAR=before
if "%VAR%" == "before" (
set VAR=after;
if "!VAR!" == "after" (
echo It worked.
) else (
echo It didn't work.
)
)
Run Code Online (Sandbox Code Playgroud)
输出:
D:\>test.cmd
It didn't work.
D:\>
Run Code Online (Sandbox Code Playgroud)
atz*_*tzz 15
您必须使用!var!延迟扩展.%var%总是在解析阶段扩展.
即,将您的代码更改为
setlocal enabledelayedexpansion enableextensions
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo If you see this, it worked
)
Run Code Online (Sandbox Code Playgroud)