2

我在使用以下命令提示符命令时遇到问题(在 Windows XP 中)。

    set SOMEVAR=
    for /F %i in (1 2 3) do set SOMEVAR=%SOMEVAR% "%i"
    echo %SOMEVAR%

我希望它构建SOMEVAR变量,以便它包含 for 循环中的每个项目,并用空格分隔: 1 2 3

然而,这是我得到的。

  >    set SOMEVAR=
  >    for /F %i in (1 2 3) do set SOMEVAR=%SOMEVAR% "%i"
  >set SOMEVAR=%SOMEVAR% "1"
  >set SOMEVAR=%SOMEVAR% "2"
  >set SOMEVAR=%SOMEVAR% "3"
  >    echo %SOMEVAR%
  %SOMEVAR% "3"

看起来环境变量在 FOR 循环期间没有更新和/或扩展。

任何想法如何使用FOR循环构建环境变量?

我目前正在使用的一种解决方法是让FOR循环调用 BAT 文件中的本地标签,该标签SET将变量自身加%1,然后跳转到:EOF。它可以工作,但我想知道是否有一种方法可以让它在一行中工作而无需调用和标签开销。

4

2 回答 2

3

它是您必须启用的选项

> help for

会解释

哎呀,我的意思是

> help set

一定要一直读到底

编辑:事实证明,您可以在单个批处理文件中打开它。将此文本保存为 temp.bat

SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
set SOMEVAR=
for %%i IN (temp.*) DO set SOMEVAR=!SOMEVAR! "%%i"
echo %SOMEVAR%
于 2009-12-23T05:36:51.793 回答
0

这是一个等效的替代方案,使用系统上已经存在的 vbscript

somevar=""
For i=1 To 3 
    somevar=somevar & i
Next
WScript.Echo somevar

输出

C:\test>cscript //nologo test.vbs 123

另外,如果你打算使用很多这些东西,你可以利用 vbscript 的字典集合或数组来存储你的变量。

于 2009-12-23T07:07:59.313 回答