if 文
比較演算子
==
:文字列の比較equ
:等号neq
:不等号gtr
:大なりlss
:小なりgeq
:大なりイコールleq
:小なりイコール
使用例
if "%response%"=="OK" (
echo That's OK!
)
Code language: DOS .bat (dos)
参考:
バッチファイルで if 文をトラブルなく使う – Qiita
IF – バッチファイルで条件分岐を使う | JavaDrive
if – 条件分岐 | 知識ゼロからの Windows バッチファイル超入門
バッチファイルで文字列を比較する | 知識ゼロからの Windows バッチファイル超入門
バッチファイルで、空の変数の判定処理 | system2222
論理和 (or)
参考:
バッチファイルで if 文条件分岐 or に関する質疑 – teratail
ファイルの存在を判定する (if exist)
if exist
の後にファイルのパス及びコマンドを続けて記述する。
if exist "path\to\file" (
echo File Found!
) else (
echo File Not Found!
)
Code language: DOS .bat (dos)
参考:
ファイルが存在している場合にのみコマンドを実行する | 知識ゼロからの Windows バッチファイル超入門
ファイルの存在を確認する | ikuyani knowledge
フォルダの存在を確認する | ikuyani knowledge
バッチでフォルダやファイルの存在チェックを行う方法/if exist 文の活用 | Rainbow Engine
ファイル有無を確認するバッチファイル備忘録 | SE からの脱出日記
コマンドのエラーを判定する (errorlevel)
type hoge.txt
if %errorlevel% equ 0 (
echo OK!!
) else (
echo Error!!
)
Code language: DOS .bat (dos)
参考:
errorlevel – 終了コードを取得する | 知識ゼロからの Windows バッチファイル超入門
バッチファイルでエラーレベルが取れない/遅延環境変数の展開 | マコトのおもちゃ箱
よくハマるバッチスクリプト/遅延環境変数 | パブリックソフトウエア株式会社
for 文内の errorlevel 取得について – teratail
フォルダが空かどうか判定する
dir
コマンドと find
コマンドを組み合わせ、エラーレベルで判定する。
dir /b /a "path\to\dir" | find /v "" > nul
if %errorlevel% equ 0 (
echo Not Empty!
) else (
echo Empty!
)
Code language: DOS .bat (dos)
ドキュメント:
参考:
Check folder is empty using batch command? – Stack Overflow
How to detect if folder is not empty? – Stack Overflow
check for anything in folder – Stack Overflow
How to find all empty directories using batch – Super User
How to loop though sub folder to check if folder is empty? – Server Fault
How to check the output of a command is empty in bat file? – Super User
batch script to move x number of files to empty folders – Super User
for 文
set /a i=0
for %%a in (%*) do (
set /a i+=1
)
echo %i% args passed.
Code language: DOS .bat (dos)
ドキュメント:
参考:
バッチファイルの for / if 文の中で変数使う際につまづくこと – Qiita
FOR – バッチファイルで繰り返し処理を使う | JavaDrive
for – バッチファイルで繰り返し処理をする | 知識ゼロからの Windows バッチファイル超入門
バッチファイルでループ処理する | 知識ゼロからの Windows バッチファイル超入門
意外と知られていないけど、知っていると便利な FOR コマンド | Web / DB プログラミング徹底解説
for コマンドでワイルドカード指定した出力順について – Microsoft TechNet フォーラム
遅延変数
遅延変数を有効にするには、setlocal
コマンドに enabledelayedexpansion
を指定する。
setlocal enabledelayedexpansion
Code language: DOS .bat (dos)
遅延変数として参照するには、感嘆符で変数名を囲む。
set /a i=0
for %%f in (%*) do (
set /a i+=1
echo !i!: %%~nxf
)
Code language: DOS .bat (dos)
参考:
遅延変数のサンプル if 文/for 文の注意点 | ITSakura
代入時の注意 (ENABLEDELAYEDEXPANSION) | FreeBSD あれこれ
setlocal | Microsoft Docs [公式]
コマンドの実行結果を変数に入れる
参考:
cmd.exe で Bash のバックティックのようにコマンドの出力を埋め込む – Qiita
バッチファイルでコマンドの実行結果を変数に格納する | まくまくノート
コマンドの実行結果を変数にセットする | コマンドプロンプトの予感
ラベルを使う (goto)
参考:
無限ループするバッチファイルの作り方!ラベルを使って何度も処理させてみよう! | Correct-Log
ワイルドカード
参考:
バッチファイルでワイルドカードを使ってファイルを移動する | Naokix.net
フォルダを再帰的に処理する
参考:
dir コマンドでファイルやディレクトリを再帰的に検索する | まくまくノート
dir コマンドでファイル名を再帰的に検索する方法 | よぼろぐ よの冒険記
指定フォルダにあるファイル一覧を再帰的にフルパスで取得する方法 | oki2a24