揮発性のメモ2

http://d.hatena.ne.jp/iww/

DOSで、プログラムの標準出力を変数に入れる

DOS の変数代入の質問です。 標準出力に書き出された値を変数に… - 人力検索はてな
test.bat

FOR /f "DELIMS=" %%A IN ('ECHO ABC') DO SET HOGE=%%A

プログラムの最後の1行を変数にセットできる。

%%A

適当な仮変数。
コマンドラインで実行するときは %A にする。
バッチファイルで実行するときは %%A にする。

FOR

FOR %A IN ( 1 2 3 ) DO ECHO %A

というのが基本パターン。

  • /fオプションで ( ) の中を 指定されたプログラムの実行結果にする
  • デフォルトでは ( ) の中の文字列は空白区切りにされるので "DELIMS=" で区切り文字を無し(改行文字のみ?)に変更する
  • ( ) の中も変数に出来る
SET CMD=DIR
FOR /f "DELIMS=" %A IN ('%CMD%') DO ECHO %A

みたいな

SET

SET /? で超親切な詳しいヘルプが見れる。これが一番参考になる。マイクロソフトすげぇ。
FOR /? も当然超スゴイ

ECHO ABC > tmp.txt
SET /P HOGE=<tmp.txt

というのも思いついたけど、作業ファイルが必要なので却下した。