バッチファイルの備忘録


概要

bat作るときに忘れてしまうのでメモ

スクリプトを表示させない

@echo off

IF文

構文
if 条件 ( 処理 )
複数分岐するとき
if 条件 (
    処理1
    処理2
    処理3
) else (
    処理1
    処理2
    処理3

ファイルの存在を確認する

if の後ろにexistをつける

ファイルがあるか確認
@echo off
if exist test.bat (
    echo test.batがディレクトリに存在する
) else (
    echo test.batがディレクトリに存在しない
)

[ 実行結果 ]
test.batがカレントディレクトリに存在する

否定

if の後ろにnotをつける

@echo off
set config=true
if not %config%==true (
    echo configはfalseだ
) else (
    echo configはtrueだ
)

[ 実行結果 ]
configはtrueだ

別のバッチファイルを呼び出す

callを使う。これ以外の方法だと非同期呼び出しになってしまい大変なことが起きる

call 呼び出したいバッチ.bat 引数1 引数2 引数3 ...

バッチを終了させる

exitを使う。
尚、callはGOTOみたいなもので特定のラベルに飛ぶ場合にも利用する。
そのラベルから戻る際にもexitを使う。

戻り値を返す

exitを使う。

exit 0

これでゼロを返せる。

尚文字列は返せない。文字列を返したい場合は別途変数を定義する。

test.bat
@echo off
rem 戻り値を定義する
RETURN_VALUE=バッチ作るの意外と難くね?
exit /b 0

バッチファイルだけ終了させる

exitはcmd.exeそのものを終了するコマンドなので、基本的にそのままは使えない。
呼び出し元のバッチファイルまで終了させるわけには行かないので、自分自身だけ終了させる必要がある。

この場合は「/b」のオプションを指定する。

exit /b 0