概要

参考:

バッチまとめ – Qiita

基本

参考:

Windows のバッチファイルの基本的な使い方 | @IT

引数

参考:

バッチファイル実行時に引数を渡す | Let’s プログラミング

バッチファイル引数 | CapmNetwork

バッチ実行時に引数を渡す方法 | 社内 SE の IT メモブログ

バッチファイルで引数を使う | 知識ゼロからの Windows バッチファイル超入門

変数

set var=42 echo %var%
Code language: DOS .bat (dos)

参考:

バッチファイル変数 | CapmNetwork

バッチファイルの変数について | 遠藤ヒズミの blog

バッチファイルで変数を使う | 知識ゼロからの Windows バッチファイル超入門

% (パーセント) | Programming Field

バッチファイルで、set コマンドを使いこなすための5つの豆知識 – Qiita

変数の使い方 | to_dk notebook

set コマンドのオプション /a 有り、無しの違い | FAQ Center

set | Programming Field

set – 変数の設定/計算/ユーザーからの入力情報の取得 | 知識ゼロからの Windows バッチファイル超入門

演算

参考:

バッチファイル演算子 | CapmNetwork

遅延変数

遅延変数を有効にするには、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 [公式]

if 文

比較演算子
  • ==文字列の比較
  • equ等号
  • neq不等号
  • gtr大なり
  • lss小なり
  • geq大なりイコール
  • leq小なりイコール
使用例
if "%response%"=="OK" ( echo That's OK! )
Code language: DOS .bat (dos)

参考:

IF – バッチファイルで条件分岐を使う | Let’s プログラミング

バッチファイルの if コマンド解説 – Qiita

iff 文のサンプル | ITSakura

if 文 | 山本ワールド

if – 条件分岐 | 知識ゼロからの Windows バッチファイル超入門

バッチファイルで文字列を比較する | 知識ゼロからの Windows バッチファイル超入門

バッチで変数の空チェック – Qiita

バッチファイルで、空の変数の判定処理 | system2222

バッチファイルの if で空文字を比較する | DT日記

ファイルの存在を判定する (if exist)

if exist の後にファイルのパス及びコマンドを続けて記述する。

if exist "path\to\file" (
    @echo ファイルあり
) else (
    @echo ファイルなし
)

参考:

指定したファイルが存在するかどうか判定する | ぱそまき

ファイルが存在している場合にのみコマンドを実行する | 知識ゼロからの Windows バッチファイル超入門

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

フォルダの存在を確認する | ikuyani knowledge

バッチでフォルダやファイルの存在チェックを行う方法/if exist 文の活用 | Rainbow Engine

ファイル有無を確認するバッチファイル備忘録 | SE からの脱出日記

for 文

set /a i=0 for %%a in (%*) do ( set /a i+=1 ) echo %i% args passed.
Code language: DOS .bat (dos)

参考:

バッチファイルの for コマンド解説 – Qiita

バッチファイルの for / if 文の中で変数使う際につまづくこと – Qiita

環境変数を定義する

@set PATH=%PATH%;"C\path\to\my_tools" @set GREETING=Hello, John
Code language: DOS .bat (dos)

参考:

SET – 環境変数の値の参照と設定 | Let’s プログラミング

環境変数の使い方 | Programming Field

画面に出力する (echo)

@echo off echo Hello, World
Code language: DOS .bat (dos)

参考:

echo – 文字列の出力 | 知識ゼロからの Windows バッチファイル超入門

echo | Microsoft Docs [公式]

コマンド自体を出力しない

コマンドの前に @ を付けるとそのコマンド自体を出力しない。

echo off を実行すると以降のコマンドは出力されない。

@echo off
Code language: DOS .bat (dos)

参考:

What does “@” mean in Windows batch scripts – Stack Overflow

改行のみを出力する

echo コマンドの後ろにセミコロン ; を付ける。

@echo;
Code language: DOS .bat (dos)

参考:

echo で改行する | 知識ゼロからの Windows バッチファイル超入門

echo で空行をファイルに出力する方法 | Project Group

How can I echo a newline in a batch file? – Stack Overflow

コマンドを複数行に分ける

1つのコマンドを複数行に分ける場合、次の行に繋げる行末に ^ を付ける。

参考:

cmd のバッチファイルで、1コマンドを複数行にわたって記述したい場合 – Qiita

長いコマンドを複数行に分けて記述する | まくまくノート

1行を複数行に分けて書く | コマンドプロンプトの予感

バッチファイルを記述する際、ひとつのコマンドを複数行に分けて書く方法 | Project Group

バッチファイルで長い1行の処理を改行を入れて複数行に分けて書きたい | みちしるべ

コマンドを続けて実行する

参考:

複数のコマンドを続けて実行する | Let’s プログラミング

cmd のバッチファイルで、1コマンドを複数行にわたって記述したい場合 – Qiita

リダイレクト/テキストファイルに出力する

大なり記号の後にファイルのパスを指定して、出力をファイルに書き出す。

@echo Hello, World > greeting.txt
Code language: DOS .bat (dos)

追記する場合は、大なり記号を二つ重ねる。

@echo My name is John. >> greeting.txt
Code language: DOS .bat (dos)

参考:

ファイルへ出力する | 知識ゼロからの Windows バッチファイル超入門

How can I use a batch file to write to a text file? – Stack Overflow

ヌルリダイレクト (nul)

nul にリダイレクトする。

@echo Hello, World > nul
Code language: DOS .bat (dos)

エラーメッセージも含めて nul にリダイレクトする。

error > nul 2>&1
Code language: DOS .bat (dos)

エラーメッセージのみ nul にリダイレクトする。

error 2> nul
Code language: DOS .bat (dos)

参考:

bat ファイルでコマンドの実行結果を出力しないようにする方法 – Qiita

How to redirect stderr to null in cmd.exe – Stack Overflow

ファイル入力

参考:

ファイルから文字列を読み込む | 知識ゼロからの Windows バッチファイル超入門

for ループを使ってファイル内容を一行ずつ読み込む | 知識ゼロからの Windows バッチファイル超入門

バッチファイル外部ファイルの読み書き | CapmNetwork

文字列の一部を取り出す

参考:

バッチで文字列の切り出しを行う | ぱーくん plus idea

Windows のバッチコマンドで文字列の切り出しを行う方法 | 夢幻電脳館

部分文字列の取得 | FreeBSD あれこれ

BAT ファイルで文字列の切り出し | アプ研

コメント (rem)

@rem コマンドの後にコメントを記述する。

@rem Write comments here...
Code language: DOS .bat (dos)

参考:

REM – コメントの記述 | Let’s プログラミング

クォーテーション

引数からクォーテーションを取り除くにはチルダを使う。

target=%~1
Code language: DOS .bat (dos)

参考:

バッチファイルで引数部分のダブルクォーテーションを削除する | system2222

パス表記のダブルクォーテーション問題は、BAT ファイル内で解決しよう | nurs の日記

引数のダブルクォーテーションを削除するサンプル | FAQ Center

findstr でダブルクォートを含む文字を検索する | FAQ Center

バッチファイルのシングルクォーテーションとダブルクォーテーションの違い/使い方 – teratail

バッチで変数にダブルクオーテーションを格納したい – teratail

バッチファイルで変数を複数行にわけて指定したときのダブルクォーテーションの指定について – スタック・オーバーフロー

空白を含むパラメータをバッチファイルに指定するには? – Microsoft TechNet

escaping double quotes in batch script – Stack Overflow

How to pass escaped double quote to batch file – Stack Overflow

外部プログラムを実行する/ファイルを開く

参考:

start と call の違い | タカフミブログ

start – バッチファイルやサブルーチンの呼び出し | 知識ゼロからの Windows バッチファイル超入門

バッチファイルから起動したプログラムの終了を待たずに処理を進める方法 | 知らないことがあってもへっちゃらさ

メモ帳の終了を待ってから次の処理に進む方法 | DOS プロンプト活用相談室 LOG

バッチファイルで複数のアプリケーションを実行する場合、前の処理の終了を待って、次の処理を始めることはできますか? – Fujitsu Japan

別のバッチファイルを実行する (call)

参考:

CALL – バッチファイルから別のバッチファイルを呼び出す | Let’s プログラミング

call – バッチファイルやサブルーチンの呼び出し | 知識ゼロからの Windows バッチファイル超入門

バッチファイルからバッチファイルを呼び出す | 知識ゼロからの Windows バッチファイル超入門

call | Windows コマンド虎の巻

call – プログラムやバッチファイルを呼び出す | k-tanaka.net

call | Programming Field

call | so-zou.jp

call | Microsoft Docs [公式]

サブルーチン

参考:

バッチでサブルーチンを書く – Qiita

call / setlocal – バッチファイルでサブルーチンを定義する、別のバッチファイルを呼び出す | まくまくノート

バッチファイルでサブルーチンを使用する | 知識ゼロからの Windows バッチファイル超入門

サブルーチン/関数のサンプル | ITSakura

exit

exit /b
Code language: DOS .bat (dos)

参考:

exit /b – バッチファイルで戻り値を得る | 知識ゼロからの Windows バッチファイル超入門

exit – コマンドプロンプトやサブルーチンを終了する | 知識ゼロからの Windows バッチファイル超入門

EXIT – コマンドプロンプトまたはバッチファイルを終了 | Let’s プログラミング

エスケープ

参考:

バッチファイルのエスケープ文字は ^ だ!! | みちしるべ

コマンドプロンプトでのエスケープ文字 – 教えて! goo

ファイルのパスに空白が含まれるとエラーになる

参考:

バッチファイルでのスペースを含んだ文字列の取り扱い | 知識ゼロからの Windows バッチファイル超入門

CMD.exe でパス名に空白が入ってどうしても解決できないときのオカルト技 – Qiita

コマンドプロンプトで「コマンドの構文が間違っています」というエラーになります – Yahoo! 知恵袋

バッチファイルの置かれたディレクトリを取得する

参考:

「%~dp0」とは | ぺんたん info

「%~dp0」を理解すれば、バッチ中でディレクトリ名やファイル名を自由に使えるから便利 | ぱーくん plus idea

How to call a batch file that is one level up from the current directory? – Stack Overflow

Get the path two directories up in batch file – Stack Overflow

how to navigate in range of parent folder without full path? – Super User

引数からファイル名を取得する

  • %~nx1ファイル名と拡張子
  • %~x1拡張子のみ
  • %~n1拡張子を取り除いたファイル名

参考:

バッチファイルで basename – Qiita

引数の数を判定する

参考:

バッチ起動時の引数の個数の数え方 | DOS プロンプト活用相談室 LOG

バッチファイル内で引数が渡されているか確認するサンプルプログラム | FAQ Center

コマンドの実行結果を変数に入れる

参考:

コマンド実行結果を環境変数に代入する方法 – Qiita

バッチファイルでコマンドの実行結果を変数に格納する | まくまくノート

コマンドの実行結果を変数にセットする | コマンドプロンプトの予感

バッチファイルでコマンドの実行結果を変数に代入する | treedown’s Report

パイプを含むコマンド実行結果を変数に代入したい | DOS プロンプト活用相談室 LOG

特定のプロセスが起動しているか確認する

参考:

バッチファイルでプロセスチェックを行う方法 | 俺の開発研究所

管理者権限で実行する

管理者権限でバッチファイルを実行した場合、システムディレクトリから実行される。

C:\Windows\System32

参考:

バッチファイルを管理者として実行した場合のカレントディレクトリ | シスメモ

管理者として実行するバッチファイルを作るときの注意事項 | マコトのおもちゃ箱

バッチファイルを管理者として実行したときの問題点と回避方法 | サラリーマン IT 技術者の調査レポート

管理者権限で実行されているか判定する

参考:

PowerShell やバッチファイルで管理者特権をチェック – Qiita

管理者権限で実行しているか判定する | ぱそまき

how to check for admin rights – Stack Overflow

How to detect if CMD is running as Administrator/has elevated privileges? – Stack Overflow

バックグラウンドで実行する

参考:

バッチ処理をバックグラウンドで行う | Mすた

バッチファイルを実行する時に黒いコマンドプロンプト画面を表示しない方法 | amaoto-log

実行を一時停止する

参考:

PAUSE – キーが押されるまで処理を一時停止 | Let’s プログラミング

スリープ

参考:

Windows の timeout / sleep コマンドでバッチファイルの実行を一時停止する | @IT

日本語が文字化けする

文字コードに「UTF-8」を使用する。

chcp 65001
Code language: DOS .bat (dos)

参考:

UTF-8 のバッチファイルが文字化けする時の対処 3選 | なゆたり

chcp | Programming Field

コードページ識別子 | Microsoft Docs [公式]

特殊文字/ダメ文字

ファイル名に使えない文字
  • <小なり記号
  • >大なり記号
  • :コロン
  • "二重引用符
  • /スラッシュ
  • \バックスラッシュ/円記号
  • |縦棒
  • ?疑問符
  • *アスタリスク
特殊文字

パスに含まれる場合、クォーテーションで囲う必要がある。

  • &アンパサンド
  • ()丸括弧
  • []角括弧
  • {}波括弧
  • ^キャレット
  • =イコール
  • ;セミコロン
  • !感嘆符
  • '引用符
  • +正符号
  • ,コンマ
  • `バッククォート
  • ~チルダ

参考:

バッチファイルを書くときに気をつけていること – Qiita

Windows でファイルやフォルダーに使わない方がいい文字 | ASCII.jp

ダメ文字一覧表 | fudist

ファイル、パス、および名前空間の名前付け | Microsoft Docs [公式]

日本語ファイル名が扱えない

参考:

バッチファイルを起動すると文字化けする現象の対策 – Qiita

バッチで日本語ファイルが開けない/文字化けする時の対処法 | Web Work Plus

Windows のコマンドプロンプトで bat ファイルを実行したら文字化けする | ライトリ

コマンドプロンプトで漢字表記のシステムファイルが扱えない – Visual Studio フォーラム

まとめ

参考:

バッチファイルの作成 | Let’s プログラミング

シェルスクリプトに慣れた人に贈るバッチファイルの書き方 | hymkor

バッチメモ | ひしだま’s ホームページ

リダイレクト、パイプ、文字列の操作、ファイルの操作まとめ | Web Creators Hub

Tips

参考:

バッチファイルを書くときに気をつけていること – Qiita

バッチファイルでの試行錯誤を回避するためのメモ – Qiita

安全なバッチファイルを書くために | hymkor

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。

Protected by reCAPTCHA