Batch file 批处理文件启用DelayedExpansion和变量设置

Batch file 批处理文件启用DelayedExpansion和变量设置,batch-file,Batch File,我正在编辑给我的批处理文件,我不确定以下代码行的作用: 设置所有键=%allKeys%!钥匙 谢谢 它将变量currentkey的运行时值附加在allkeys的解析时值后一个空格,并将结果指定为allkeys的运行时值-只要调用了delayedexpansion。如果未调用delayedexpansion,它将追加字符串!钥匙,而不是变量currentkey的值 在没有任何上下文信息的情况下,我们只能猜测更多…下面是一个代码示例 allkeys设置在for in do循环之外 在for-in-d

我正在编辑给我的批处理文件,我不确定以下代码行的作用:

设置所有键=%allKeys%!钥匙


谢谢

它将变量
currentkey
的运行时值附加在
allkeys
的解析时值后一个空格,并将结果指定为
allkeys
的运行时值-只要调用了
delayedexpansion
。如果未调用
delayedexpansion
,它将追加字符串
!钥匙
,而不是变量
currentkey
的值


在没有任何上下文信息的情况下,我们只能猜测更多…

下面是一个代码示例

allkeys设置在for in do循环之外

在for-in-do循环中,它已更改,但由于它使用%allkeys%,因此更改不是累积的

@echo off
setlocal enabledelayedexpansion
set allkeys=one
for %%a in (two three four five six) do (
set currentkey=%%a
set allKeys=%allKeys% !currentKey!
echo allkeys is now "!allkeys!"
)
echo allkeys is now "%allkeys%" outside the loop
pause
换行
set allKeys=%allKeys%!钥匙
然后运行它以查看差异

set allKeys=!allKeys! !currentKey!

有关延迟扩展的说明,请键入
SET/?

您确实应该提供更多的代码。如果不知道是否启用了延迟扩展、该行是否是代码块的一部分等,就无法预测它的功能。要猜测其用途,可能需要整个脚本。