コマンドプロンプトでFORループを使用してSETで環境変数を構築
-
21-09-2019 - |
質問
私は(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の辞書コレクションまたは配列を利用することができます。
所属していません StackOverflow