Windowsバッチファイル (bat) のメモ
自分用。適当に追記。
基本
- 文字コードは Shift_JIS にすること。
- 改行コードは CR+LF ……と思いきや、LFだけでも大丈夫な感じがする。
勝手にコマンドプロンプト閉じさせない
pause
最後に pause
を書くと、キー入力があるまでは閉じないでくれる。
結果を画面に表示するようなプログラムを実行するとき、結果を確認するのによく使う。
cmd.exe /K
最後に cmd.exe /K
を書くと、コマンドプロンプトが開いたままになり、続けて操作できる。
例えば以下は PATH
に追記してコマンドプロンプトを開いたままにするだけのスクリプト。
コマンドプロンプトにコマンド表示させない
先頭に @echo off
と書く。
bat自身のファイルパス・ディレクトリを取得する
%\
dpn0 でファイルパスを、
%`dp0` でディレクトリを取得できる。
batファイル自身が C:\path\to\me.bat
の場合…
カレントディレクトリをバッチファイルのディレクトリにする - 強火で進め
batから別のbatを実行する
pauseの「続行するには何かキーを押してください」を表示させない
ファイルに出力する
変数を使う
set {変数名}={値}
で値をセットする。使うときは %{変数名}%
と書くと使える。
値にスペースが入ってたりしても、特にクォートとかはしなくて平気。
PATHに追記する
set
で PATH
の現在値に追加したいパスを結合してセットする。
現在日時をYYYYMMDDhhmmssで取得
[現在時刻をYYYYMMDDHHMMSS形式で取得する - Qiita] : バヤシタ](https://qiita.com/ejiw/items/2a17a2f8cbf0588369da)
ファイルが存在したら消す
exist
でファイル・フォルダの存在チェックできる。del
でファイルを消せる。
フォルダが存在したら消す
exist
でファイル・フォルダの存在チェックできる。rmdir
でフォルダを消せる。
rmdir
に /S
フラグを指定すると、フォルダの中身のファイルやサブフォルダごと全部消せる。/Q
フラグを指定すると、削除の確認をスキップできる。
ファイルを上書きコピーする
copy
に /Y
フラグを指定すると、ファイルが存在してても確認せずに上書きする。
ファイル・フォルダをそのままコピーする
xcopy
で元の構造をそのままにコピーできる。
/I
フラグを指定すると、コピー先のフォルダが存在しない場合に自動で作成してくれる。
/H
フラグを指定すると、隠しファイルも完全にコピーする。
/E
フラグを指定すると、コピー先に無いサブフォルダもコピーする。
/Y
フラグを指定すると、ファイルが存在してても確認せずに上書きする。
コマンドプロンプト xcopy - [ファイルをディレクトリ構造ごとコピーする]
npmコマンドを使う
call
で呼ばないと途中で終了してしまう。