サンプルとテンプレート

各回のデモで使うバッチと、新しく書き始めるときにコピーするテンプレート。サンプルはすべて docs\samples\ 配下に閉じた動作で、外部のフォルダは書き換えません

📅 作成: 2026-08-25 / 更新: 2026-10-09

目次

  1. 実行方法と注意
  2. 第1回のサンプル(01\)
  3. 第2回のサンプル(02\)
  4. 第3回のサンプル(03\)
  5. テンプレート(templates\)

実行方法と注意

実行のしかた

方法手順備考
ダブルクリックエクスプローラでファイルをダブルクリックする引数が不要なサンプルはこれで動く。末尾に pause があるので結果を読める
コマンドプロンプトプロジェクトのフォルダを開いて docs\samples\01\01-hello.cmd のように実行する引数が必要なサンプルはこちら
エクスプローラのアドレスバーアドレスバーに cmd と入力するとそのフォルダでコマンドプロンプトが開くパスを打つ手間が省ける

引数が必要なサンプルは、引数なしで実行すると使い方(usage)が表示されます。

すべてのサンプルに共通する事項

コンソールのコードページが 65001(UTF-8)だと日本語が化けます。ファイルが正しくても化けるので、その場合は chcp で確認してください。932 でなければ、コマンドプロンプトを新しく開き直すか、chcp 932 を実行してから試してください。詳細は落とし穴 #3 にあります。

第1回のサンプル(01\)

資料: 01. バッチの実行モデル

ファイル内容引数
01-hello.cmdecho と rem の確認なし
02-expand.cmd「置換してから実行する」ことの確認。未定義変数 / set の書き方の違い / %% / 記号を含む値の再解析なし
03-errorlevel.cmd終了コードの確認。&& と ||、if errorlevel が「以上」であることなし
04-args.cmd引数とチルダ修飾子の一覧表示ファイルパス
05-backup.cmdデモの完成版。日付付きの名前で backup\ にコピーするファイルパス

実行例

rem 引数が必要なサンプル
docs\samples\01\04-args.cmd "docs\samples\01\sample.txt" abc
docs\samples\01\05-backup.cmd "docs\samples\01\sample.txt"

この回で試してほしいこと

第2回のサンプル(02\)

資料: 02. 制御構文と展開の罠

ファイル内容引数
01-delayed-ng.cmd失敗版%VAR% でループを回して 0 のままになる例なし
01-delayed-ok.cmd修正版!VAR! にした版なし
02-if.cmdif の4つの形と数値比較なし
03-for.cmdfor の4つの形。usebackq による意味の切り替えも確認できるなし
04-string.cmd部分取得・置換・含有判定なし
05-subroutine.cmdサブルーチンと戻り値の2つの方法なし
06-sort.cmdデモの完成版。ファイルを拡張子ごとに sorted\ へ振り分ける省略可

付属のデータファイル

ファイル用途
data.txtfor /f で行を読む例
data file.txt空白を含むファイル名。usebackq が必要になる例
list.csvtokens / delims / skip の例
testfiles\06-sort.cmd の振り分け対象(.txt .log .png と拡張子なし)

この回で試してほしいこと

第3回のサンプル(03\)

資料: 03. 実務で使えるバッチを書く

ファイル内容引数
01-datetime.cmd日時取得の3つの方法を並べて実行し、結果を見比べるなし
02-errorhandling.cmdエラー処理の型。robocopy が成功でも 0 以外を返すことも確認できるなし
03-logging.cmdログ出力。2>&1 の位置による違いを実演するなし
04-args.cmd引数解析(shift ループ)とヘルプ表示省略可
05-backup.cmd第1回のバックアップを配布可能な形に仕上げた最終版ファイルパス

実行例

rem ヘルプを表示する
docs\samples\03\04-args.cmd

rem オプション付きで実行する
docs\samples\03\04-args.cmd -v -o out.txt "docs\samples\03\sample.txt"

rem バックアップの最終版(-v で詳細表示)
docs\samples\03\05-backup.cmd -v "docs\samples\03\sample.txt"

この回で試してほしいこと

テンプレート(templates\)

サンプルは説明のために書かれていますが、テンプレートはコピーして使うためのものです。この勉強会で扱った対策をすべて含んでいます。新しくバッチを書くときは、用途に合う1本をコピーして始めてください。

ファイル用途特徴
tool.cmd引数を取るツール引数チェック、ヘルプ表示、:finish での後始末
launcher.cmdps1 や exe の起動pause あり。ダブルクリック前提
batchjob.cmd無人実行のバッチ処理日付ごとのログ、pause なし

使い方は 03. 実務で使えるバッチを書く で説明しています。