2010-07-22
バッチファイルでのメッセージ出力
バッチファイルでのメッセージ出力についてのメモ書きです。*1
(参考:シェルスクリプトでのメッセージ出力)
コマンドエコーをOFFにする
- 「echo off」を実行すると、コマンドエコーがOFFになる。(「echo on」でONに戻る。)
- 一時的にコマンドエコーをOFFにする場合は、コマンドの前に「@」を付ける。
- バッチファイルの先頭では、「@echo off」とすることが多い。
@echo off ...
echoコマンド
- メッセージ出力には、通常はechoコマンドを使う。
- echoコマンドの出力先は、標準出力となる。
- echoコマンドでメッセージを出力すると、必ず改行される。
- 空行を出力する場合は、「echo.」とする。*2
- 「%」を出力する場合は、「%%」でエスケープする。
- その他の特殊文字(「>」や「^」など)を出力する場合は、その文字の前に「^」を付けてエスケープする。
@echo off rem 通常 echo メッセージ rem 空行 echo. rem %のエスケープ echo %%OS%%: %OS% rem 特殊文字のエスケープ (<と>) echo ^<a href="http://www.hatena.ne.jp/"^>はてな^</a^>
一時停止
- 一時停止には、pauseコマンドを使用する。
- pauseコマンドのメッセージを変える場合は、echoコマンドとNULへのリダイレクトを組み合わせる。
@echo off rem 通常 pause rem メッセージ変更 echo 何かキーを押すと終了します... pause > NUL
ユーザ入力
- 「set /p」を使うことにより、ユーザが入力した文字列を環境変数にセットできる。
- 「set /p」では、ユーザに表示するメッセージを指定できる。(メッセージなしも可能)
- 一般的には、入力文字列内の特殊文字をチェックする必要がある。
- 「set /p」とNULからのリダイレクトを組み合わせると、改行なしのメッセージ出力を実現できる。
@echo off rem ユーザ入力 set /p YN="Yes or No? (y/n): " rem 二重引用符を取り除く if defined YN ( set YN=%YN:"=% ) rem 改行なしのメッセージ出力 set /p DUMMY="答え: " < NUL rem 入力値の判定 if /i "%YN%" == "y" ( echo Yes ) else ( echo No )
標準エラー出力
- 標準エラー出力にメッセージを出力する場合は、echoコマンドなどとリダイレクトを組み合わせる。
- コマンドを括弧で囲むことにより、複数コマンドの出力をまとめてリダイレクトできる。*3
@echo off rem 標準エラー出力 (echo) echo メッセージ1 1>&2 rem 標準エラー出力 (set /p) set /p DUMMY="メッセージ2" < NUL 1>&2 echo. 1>&2 rem 標準エラー出力 (複数行) ( echo メッセージ3 echo メッセージ4 echo メッセージ5 ) 1>&2
トラックバック - http://d.hatena.ne.jp/simply-k/20100722/1279843883
リンク元
- 620 http://www.google.co.jp/url?sa=t&rct=j&q=バッチ echo出力 改行 なし&source=web&cd=4&ved=0CEAQFjAD&url=http://d.hatena.ne.jp/simply-k/20100722/1279843883&ei=J7GfTsT
- 273 http://www.google.co.jp/url?sa=t&rct=j&q=コマンドプロンプト 標準エラー出力を環境変数へ&source=web&c
- 178 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cts=1331095047440&sqi=2&ved=0CCcQFjAA&url=http://d.hatena.ne.jp/simply-k/20100722/1279843883&ei=r-RWT7KFA4TmmAXAyrnpCQ&usg=AFQjCNHAGcLe-vbfVQ9GZ3bM_C3zAabHaQ&sig2=ltvdsAQVLN5jMw6
- 167 http://www.google.co.jp/search?q=バッチファイル "1>&2"&rls=com.microsoft:ja:IE-SearchBox&ie=UTF-8&oe=UTF-8&sourceid=ie7&rlz=1I7GGLL_ja&redir_esc=&ei=z9NPTMTdAZDEvQO8_PypAw
- 145 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cts=1331179527056&ved=0CDcQFjAC&url=http://d.hatena.ne.jp/simply-k/20100722/1279843883&ei=ATBYT_6YLYrDmQX7wLCuDw&usg=AFQjCNHAGcLe-vbfVQ9GZ3bM_C3zAabHaQ&sig2=OuyGhZGEjz9HOhRwVtlHf
- 143 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=1&ved=0CC8QFjAA&url=http://d.hatena.ne.jp/simply-k/20100722/1279843883&ei=aQtrT6V-8ciYBdCA8ZgG&usg=AFQjCNHAGcLe-vbfVQ9GZ3bM_C3zAabHaQ
- 118 http://www.google.co.jp/search?q=コマンド+set +改行なし&hl=ja&rls=com.microsoft:en-US&rlz=1I7GGLD_ja&ei=CZ1bTMuZCs_QcZXW_IQC&start=10&sa=N
- 116 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CC8QFjAB&url=http://d.hatena.ne.jp/simply-k/20100722/1279843883&ei=w_16T6L_H8LfmAWN3fDEAw&usg=AFQjCNHAGcLe-vbfVQ9GZ3bM_C3zAabHaQ
- 99 http://search.yahoo.co.jp/search?p=バッチファイル+環境変数に特殊文字 エスケープ&aq=-1&oq=&ei=UTF-8&f
- 82 https://www.google.co.jp/