MS-DOSの時代から、脈々と受け継がれてきた、コマンドプロンプト。
最近では、コマンドプロンプトから実行するコマンドの数が増えてきたように思います。
ここでは、Windows XP以降のOSにある、コマンドプロンプトから実行できる、数々のBATスクリプトを紹介していきます。
一般的な教本には、 echo off と書かれているでしょうが、
それだと、 echo off のコマンド自体が画面に表示されます。
画面に全く表示させないようにするには、下記のように記載します。
@echo off
この記述を、バッチファイルの先頭に記載しておくと、それ以降画面上に実行するコマンドが表示されなくなります。
ただし、プログラムが表示するメッセージは、消すことが出来ませんので、過信しないように。
各コマンドが表示するメッセージも表示させたくない
とにかく画面には、必要最低限のメッセージだけ表示させるようにしたい。
そんな時には、リダイレクション機能を使って、NULデバイスに文字を転送します。
NULデバイスとは、仮想デバイスの一つで、虚無の世界にデータを誘うことが出来るデバイスです。(嘘)
ただし、そのコマンドが出力する文字表示全てを NUL デバイスに送るため、重要なメッセージを
取りこぼすことがないように注意する必要があります。
例:
net view \\sv > nul
画面の表示体裁によっては、空改行を行わせたいときがあると思います。
画面に文字を表示させる、echo コマンドを用いても(後ろに何も文字を入力しない)、
ECHO は <OFF> です。
と表示されるだけで、改行してくれません。
そんな時には、 echo\ (スペースを入れずに)
echo\
たぶんフォントの関係で、\ (バックスラッシュ)が表示されていると思いますが、
¥マークです。
実際には、
echo\
と記述します。
ログファイルを記録するとき、日付をファイル名にすると便利ですね。
%DATE:~2,2%%DATE:~5,2%%DATE:~8,2%
これは、
%DATE:~2,2%
%DATE:~5,2%
%DATE:~8,2%
の組み合わせです。
使用例:
set DateParam=%DATE:~2,2%%DATE:~5,2%%DATE:~8,2%
2013/05/10の場合、
DateParam=130510 同義
これで、DateParamには、日付が代入されます。
このコマンドの説明
環境変数 %DATE% には、その日の日付が格納されています。
例えば、2013/05/10の場合
%DATE:~2,2% は、2013/05/10の 2文字目から 2文字分抜き出しなさい → 13
(文字は1文字目を、0文字目として数える)
同様に
%DATE:~5,2% は、2013/05/10の 5文字目から 2文字分抜き出しなさい → 05
%DATE:~8,2% は、2013/05/10の 8文字目から 2文字分抜き出しなさい → 10
というわけです。
バッチファイル内で、別のファイルを参照したいときに、バッチファイルと同じフォルダにコピーするだけで
参照できるようにしたいときがありますよね?
そんな時は、これで取得できます。
%~dp0
例えば、C:\Work でバッチファイルを実行して、フォルダ情報を取得した場合
C:\Work\
と、なります。
フォルダの最後に、必ず【\】が付きますので、取り扱いには注意してください。
ちなみに、 %~d0 は、ドライブ番号
%~p0 は、フォルダ情報を取得できます。
%~d0
%~p0
C:
\Work\
%~p0 の場合、前後に 【\】記号が、付加されていることに注意してください。