我有以下命令提示命令麻烦(在Windows XP)。

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

我希望它来建立的 SOMEVAR 变量,以便它包含在每个项目中的报价循环,用空格隔开: 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 的循环?

这是我目前使用的一种解决方法是让的循环调用的BAT文件的本地标签,该标签的设置的S中的变量本身以及 %1 ,然后跳转到的:EOF 即可。它的工作原理,但我想弄清楚,如果有一种方式来获得它在一个行工作,而无需调用和标签的开销。

有帮助吗?

解决方案

其一个选项必须启用

> help for

将解释

糟糕,我的意思

> help set

一定要一路读至底部

编辑:事实证明,你可以在一个单独打开这个批处理文件。 保存该文本作为temp.bat

SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
set SOMEVAR=
for %%i IN (temp.*) DO set SOMEVAR=!SOMEVAR! "%%i"
echo %SOMEVAR%

其他提示

这里是一个等效替代方案中,使用VBScript这已经在系统上

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

输出

C:\测试> CSCRIPT // NOLOGO test.vbs 123

另外,如果你要使用大量的这些东西,你可以使用VBScript的字典集合或阵列来存储你的变量。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top