【自分用メモ】【*.bat】使い方メモ
最近バッチファイルで色々やる機会があったので、自分用の使い方とかをとりとめなく書く(都度追記)
batのお決まり
多分ほぼすべてのバッチファイルの最初に書いてあるもの。
ここ以降は記述しなくても絶対に頭で書かれているものと思っておく。
@echo off
setlocal
cd /d %~dp0
(省略)
endlocal
@echo off
@
を行頭につけるとその行の出力が抑止される。
echo off
でバッチファイル内で実行コマンドの出力を抑止できる。
これをバッチの頭で打っておかないと、*.bat内の記述が全て出力される残念なツールになる。
setlocal
このバッチファイルでの環境変数をローカル化してくれる。
トンデモ変数を指定してもこいつがあれば他に危害を加えることはなさそう。
cd /d %~dp0
言わずもがなのcd
コマンド。
実行したバッチファイルが置かれたディレクトリに移動する。
/d
でドライブを跨いだ移動が可能なので定型文として書いておくと良い気がする。
%~dp0
は実行ファイルのフルパスを示す。あとで詳細。
endlocal
setlocal
の対となるもの。setlocal
以前の設定を復元する。
明示的に書かなくても、setlocal
が書かれたbatは暗黙的にendlocal
が実行される。
要は、このbatで設定したものはここで終わり!という宣言。
コメント
バッチファイル内のコメントの書き方は何種類かあるみたいだけど、rem
を使うのが無難だと思う。
rem 〇〇〇
で行末までがコメントアウトされる。
変数
バッチファイルの変数は%
で参照する。echo
を使って出力する。
rem ファイル実行時刻を出力する
echo %date%
echo %time%
echo %date% %time%
pause > nul
実行結果
2020/07/15
23:19:08.65
2020/07/15 23:19:08.65
pause
はなにかしらのキーが押されるまで処理を中断するコマンド。
好きなだけ実行時刻を確認したら好きなキーを押すとコマンドプロンプトが閉じる。
echo %date% %time%
変数は%
で囲うことで参照できる。
echo
コマンドで環境変数のdate
(日付)とtime
(時刻)を出力している。
バッチパラメーター(%0、%1~9)
上では%~dp0
について詳細を書くと書いているが、一緒に書くとやや面倒になるので先に%0
だけ書いてみる。
変数を%
で囲むと上では書いたけど、じゃあ引数はどうするのという話になる。
引数は第一引数が%1
、第二引数が%2
…といった具合に頭に%
をつけて受け取る。
これをバッチパラメーターというらしい。
※1~9までしか入らないので注意する。10以上はいつか書くかも
%0
は実行されたバッチファイルを受け取る。
rem %0:実行されたバッチファイル名が入る
echo %0
rem %1:第一引数
echo %1
rem %4:第四引数
echo %4
rem %10:10以上は無理
echo %10
実行結果
C:\bat\param.bat AA BB CC DD
"C:\bat\param.bat"
AA
DD
AA0
%0
は実行されたバッチファイル自身をフルパスで受け取っている。
%10
は%1
と0
に分解されAA0
と出力された。
%0
が分かったところでいよいよ%~dp0
について考えてみる。
パス演算子
%~dp0
は以下の複数の要素で成り立っている。
① %~0
② d
③ p
①については上で書いた通りである。
~
をつけると" "
を削除して%0
を展開できる。
echo %0
echo %~0
pause > nul
"C:\bat\childa.bat"
C:\bat\childa.bat
" "
が消えた。
②のd
について実際に見てみよう。
echo %~d0
pause > nul
C:
ドライブ文字だけが表示された。ドライブの d
である。わかりやすい。
これは%0
に対するドライブ文字を示している。
つまりDドライブ配下のバッチを実行するとD:が出力される。
③のp
について同様に見てみよう。
echo %~p0
pause > nul
\bat\
パスが表示された。パスの p
である。わかりやすい。
上記同様、%0
に対するパスである。
では合わせてみよう。
echo %~dp0
pause > nul
C:\bat\
ドライブ文字込みのパスが表示された。
この~d
や~p
のことをパス演算子と呼ぶらしい。
つまりcd /d %~dp0
は実行されたbatが存在するパスへ移動するコマンドとなる。
(/d
でドライブを跨いだ移動ができる)
batと同じパスに使用するファイルを置くといちいちパスを指定せずに実行可能。
以下参照。
【自分用メモ】【*.bat】パス演算子
編集中..
Author And Source
この問題について(【自分用メモ】【*.bat】使い方メモ), 我々は、より多くの情報をここで見つけました https://qiita.com/dogimagu/items/aabf5caed37e2438d7ae著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .