gpt4 book ai didi

string - 批处理 : Returning a value from a SETLOCAL EnableDelayedExpansion

转载 作者:行者123 更新时间:2023-12-03 01:13:48 25 4
gpt4 key购买 nike

我想知道为什么这段代码不能按预期工作:

@ECHO off
SET S1=HELLO

SETLOCAL EnableDelayedExpansion
SET S2=!S1! WORLD^^!
ECHO !S2!
ENDLOCAL & SET S1=!S2!

ECHO %S1%
PAUSE

输出:

HELLO WORLD!
!S2!

预期输出:

HELLO WORLD!
HELLO WORLD!

谢谢。

最佳答案

它按预期工作。
延迟扩展将在执行时而不是解析时扩展变量,因此它将您的行 ENDLOCAL & SET S1=!S2! 解释为
endlocal
但在 SET S1=!S2! 部分,延迟扩展已关闭,因此无法再扩展。

在你的情况下你可以使用ENDLOCAL & SET S1=%S2%

由于感叹号是S2是“安全的”,所以延迟的exp。在执行时关闭。

但是始终安全的返回有点复杂。
我们在 Dostips: Return ANY string across ENDLOCAL boundry 进行了讨论

关于string - 批处理 : Returning a value from a SETLOCAL EnableDelayedExpansion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9408953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com