質問

私は(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 のsの自身への変数プラスの %1 は、その後にジャンプの:EOF の。それは動作しますが、私はそれを呼び出し、ラベルのオーバーヘッドなしで1行で動作するように取得する方法があるかどうかを把握したいと思います。

役に立ちましたか?

解決

そのオプションあなたが有効にする必要があります。

> 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