2016-08-19 4 views
0

私は現在、これで私のコマンドライン引数を連結しようとしています:バッチファイルのコマンドライン引数を連結する方法は?

for %%a in (%*) do set "subject=%subject% %%a" 

だから、例えば私が

my.bat subject line here 

を実行する場合、それは保存し、「ここに件名」に私の主題の変数を設定する必要がありますスペース。しかし、現在実行後、私の主題変数は最​​後の単語に設定されます。私は「ここ」の主題価値を得る。

コマンドライン引数を連結するにはどうすればいいですか?

+0

環境変数 'subject'が__FOR__ループの後に期待される文字列を持たない理由を知りたければ、コマンドプロンプトウィンドウを開き、' set /? 'を実行してすべての出力ヘルプページを読みます。あなたのものに非常によく似た 'for'の例があります。これには、文字列を正しく連結するために遅延拡張を使用する必要がある理由が説明されています。 – Mofi

答えて

3

は、あなただけ行うことはできません。環境変数を、解析時に置換されないように

SET subject=%* 

はまた遅延拡張を有効にします。

Setlocal EnableDelayedExpansion 
for %%a in (%*) do set subject=!subject! %%a 
echo %subject% 

Difference between %variable% and !variable! in batch fileを参照してください。

+0

ありがとうございます!これは完全にうまくいった – thuy

+0

いいえ、問題が解決した場合は解決策に同意してください。 – FloatingKiwi

関連する問題