しかし、世の中には CUI しかないアプリケーションもあります。
毎回コマンドプロンプトから入力するのは大変ですが、
バッチファイルを作っておくとダブルクリックで実行できて便利。
今回は rtmpdump のバッチファイルを例に解説します。
::rtmpdump.bat set rtmpdump="..\rtmpdump.exe" %rtmpdump%^ --rtmp "rtmp://"^ --tcUrl ""^ --app ""^ --playpath ""^ --swfVfy "http://"^ --pageUrl "http://"^ --flashVer ""^ --flv "" pause exit
最初の行から解説していきますね。
::rtmpdump.bat rem rtmpdump.bat最初はコメント行です。
正式には rem のあとにコメントを書きます。
: はラベルの表記なのですが
:: はコメントの簡略表記として使われてるようです。
set rtmpdump="..\rtmpdump.exe" %rtmpdump%^次は変数 rtmpdump に値として rtmpdump.exe のパスをセットしてます。
フルパスでもバッチファイルからの相対パスでもOKです。
変数をコマンドとして展開する場合、スペースで区切られるので
パス名にスペースを含むときはダブルクォートで囲みましょう。
次に %rtmpdump% のように変数名を % で囲むと値が展開されます。
さて、rtmpdump にはこのあとオプションをいくつか渡す必要があります。
すると一行がえらく長くなって見づらいし、修正もしにくいので複数行に分けます。
単純に改行するとコマンドとして途切れてしまうので
改行を ^ (キャレット)でキャンセルします。
--rtmp "rtmp://"^ --tcUrl ""^ --app ""^ --playpath ""^ --swfVfy "http://"^ --pageUrl "http://"^ --flashVer ""^ --flv ""先ほどの ^ (キャレット)を使ってオプションをこんな感じで書けます。
一行に書くより遙かに見やすいですね。
ここでも引数にスペースを含まない限り、 ダブルクォートで囲む必要はありませんが念のため囲ってます。
rtmpdump のオプションについてはドキュメントを読んでください。
pause exitここはある意味肝です。
普通にバッチファイルをダブルクリックすると 実行後にコマンドプロンプトが閉じてしまうので
エラーが起きたのか成功したのかすら分かりません。
そこで、 pause を入れることで勝手に閉じるのを防げます。
exit はなくてもいいのですが、ここで終了するので このあとにコメントやメモを書いておけます。
オプションやヘルプなんかを貼っておくと便利ですね。
ここまで説明してなんですが、rtmpdump で検索して来たあなた。
RTMPExplorer を使った方が簡単ですよ。
@echo off@echo off と書くと以後のコマンド入力が表示されなくなります。
出力だけ見たいときに書いておくとスッキリします。
rtmpdump のバッチでは変数展開をチェックしたいので書いてませんけど。
%rtmpdump%^ -オプション^ > output.txt 2>&1出力を保存したいときはこんな感じでリダイレクトを使って、テキストファイルに書き出します。
リダイレクトの詳細は以下を参照してください。
コマンド リダイレクト演算子を使用する - microsoft
バッチパラメータ
バッチファイルは引数を使うことも出来ます。%0 はバッチファイル名、%1 ~ %9 は引数で置換されます。
ドラッグアンドドロップしたファイル名は %1 になります。
@echo off echo %1 pause上のコードを C:\test.bat と保存してコマンドプロンプトから使う例です。
組み込みの環境変数 %date% を引数として渡してます。
C:\test.bat %date%
また、 %~(修飾子)(引数番号) とすると、ファイル名の一部を取り出したりできます。
@echo off echo ファイル名 echo %~0 echo フルパス名 echo %~f0 echo ドライブ名 echo %~d0 echo パス名のみ echo %~p0 echo ファイル名のみ echo %~n0 echo 拡張子のみ echo %~x0 echo ショートネーム echo %~s0 echo ファイル属性 echo %~a0 echo ファイル日付 echo %~t0 echo ファイルサイズ echo %~z0 echo. echo ドライブ名 + パス名 echo %~dp0 echo ファイル名 + 拡張子 echo %~nx0 echo. pause
日付・時間を使う
ファイル名などに日付・時間を入れたいこともありますね。そんなときは、組み込みの環境変数 date、time を使います。
::datetime.bat @echo off echo 今日の日付 echo %date% :: 2012/01/01 echo 現在時刻 echo %time% :: 12:00:00.00 pause
ここで問題なのは / (スラッシュ)、 : (コロン) はファイル名に使えないことです。
要らないものは置換してしまいましょう。
書式は %変数名:置換対象文字列=置換後文字列% となります。
echo %date:/=% :: 20120101 echo %time::=% :: 120000.00 echo %date:/=%_%time::=% :: 20120101_120000.00
このままで用が足りる場合もあるでしょうが、
細かく整形したい場合は抽出しちゃいましょう。
書式は %変数名:~m,n% (m,nは数字)となります。
m 文字目から n 文字を抽出します。
1番目の文字を 0 として数えることに注意。
m がマイナスの場合は、後ろから数えます。
set dt=%date% set yyyy=%dt:~-10,4% set mm=%dt:~-5,2% set dd=%dt:~-2,2% set date2=%yyyy%-%mm%-%dd% echo %date2% :: 2012-01-01 set tm=%time: =0% set hh=%tm:~0,2% set mm=%tm:~3,2% set ss=%tm:~6,2% set time2=%hh%-%mm%-%ss% echo %time2% :: 12-00-00 echo %date2%_%time2% :: 2012-01-01_12-00-00これで好きなように整形できますね。
補足しておくと、Windows2000では日付が
日 2012/01/01のように曜日が頭に付くので、後ろから数えてます。
また、時間が1桁の場合
1:00:00.00のように頭にスペースが付くので 0 に置換します。
短く書きたい場合は
:: yyyy-mm-dd echo %date:~-10,4%-%date:~-5,2%-%date:~-2,2% :: Windows2000を考慮しない場合 echo %date:~0,4%-%date:~5,2%-%date:~8,2% :: hh-mm-ss set time2=%time: =0% echo %time2:~0,2%-%time2:~3,2%-%time2:~6,2%
入門編としてはこれぐらい押さえておけばいいでしょう。
制御文やループを使いたいという方は参考サイトをどうぞ。
- 参考サイト -
コマンドライン リファレンス - microsoft
Windowsコマンドプロンプト基礎文法最速マスター - CX's Memo
バッチファイル基礎文法リファレンス - 学習ノート
連載:Windows 2000コマンドライン徹底活用 - @IT
バッチ・ファイル中で日付をファイル名に使用する - @IT
0 コメント:
コメントを投稿