2

次のコマンドプロンプトコマンドで問題が発生しました(Windows XPの場合)。

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

forループ内の各項目が引用符で囲まれ、スペースで区切られるように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ループを使用して環境変数を作成する方法はありますか?

私が現在使用している回避策は、FORループでBATファイルのローカルラベルを呼び出し、変数をそれ自体に%1を加えたものに設定してから、 :EOFにジャンプすることです。それは機能しますが、呼び出しとラベルのオーバーヘッドなしで1行で機能させる方法があるかどうかを知りたいと思います。

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 に答える