mcu*_*mcu 4 string shell console batch-file delayedvariableexpansion
我想知道为什么这段代码不能按预期工作:
@ECHO off
SET S1=HELLO
SETLOCAL EnableDelayedExpansion
SET S2=!S1! WORLD^^!
ECHO !S2!
ENDLOCAL & SET S1=!S2!
ECHO %S1%
PAUSE
Run Code Online (Sandbox Code Playgroud)
输出:
HELLO WORLD!
!S2!
Run Code Online (Sandbox Code Playgroud)
预期产量:
HELLO WORLD!
HELLO WORLD!
Run Code Online (Sandbox Code Playgroud)
谢谢.
它按预期工作.
延迟扩展将在执行时扩展变量,而不是解析时间,因此它将您的行解释ENDLOCAL & SET S1=!S2!
为
endlocal
但是在SET S1=!S2!
延迟扩展的部分已关闭,因此无法再扩展.
在你的情况下你可以使用
ENDLOCAL & SET S1=%S2%
由于感叹号是S2是"安全的",因为延迟exp.在执行时关闭.
但总是安全的回归有点复杂.
我们在Dostips上讨论过它:在ENDLOCAL边界上返回任何字符串
归档时间: |
|
查看次数: |
2465 次 |
最近记录: |