批处理文件EnableDelayedExpansion和变量设置

时间:2013-06-13 14:35:20

标签: batch-file

我正在编辑一个给我的批处理文件,我不确定以下代码行是做什么的:

设置allKeys =%allKeys%!currentKey!

谢谢!

3 个答案:

答案 0 :(得分:0)

它将空格后面的变量currentkey的运行时值附加到解析时值allkeys,并将结果指定为allkeys的运行时值 - 提供了delayedexpansion。如果未调用delayedexpansion,则会附加字符串!currentKey!,而不是变量currentkey的值。

如果没有任何背景信息,我们会猜测......

答案 1 :(得分:0)

以下是代码中的示例。

allkeys设置在for for循环之外。

在for for 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% !currentKey! 对此并运行它以查看差异。

set allKeys=!allKeys! !currentKey!

答案 2 :(得分:0)

有关延迟展开坐标的说明,请输入SET /?