Windowバッチ・batで困ったときに頼る人・本・サイト
一次情報
他参考サイトなど
目次だけでやりたいことがヒットしそう
バッチファイルの文字コードはSJIS(MS932)だよ バッチファイルの基本は変数を使った文字列処理だよ
変数を使うにはsetコマンドを使うよ
代入の式で変数名と=の間は空白を入れちゃだめだよ
変数の中身を使うには%で括って参照(または展開)するよ
変数の削除
難しいことが起きないように変数名はバッチ内で一意にするよ
変数の参照の書式は%variable%か%%xの2種しかないよ
変数からは加工した文字列を取り出せるよ
引数は別枠で%数字しかないよ
バッチの実行の方法を理解するよ
1. ダブルクリック
2. ファイルやディレクトリをドロップ
3. コマンドプロンプトで実行する
4. タスクスケジューラーを設定して実行する
バッチファイルは「現在のフォルダ」という特別なフォルダを認識しているよ
ファイルやフォルダの場所は常にフルパスで指定しよう
括弧(...)の中で変数をsetしたら遅延展開を使うよ set /aの計算式で変数を参照するとき
ファイル・フォルダの一括処理はforを定型で覚えるよ
for /f "usebackq"で実行するコマンドのエラー対策
エラー出力もforの対象にする
エラーログからメッセージを拾う
条件分岐 if
文字列比較==
数値の比較
ファイル、フォルダの存在を確認するexist
変数の存在を確認するdefined
エラーの有無を検出するerrorlevel 数値
条件付き実行&& ||とコマンドの連結&
サブルーチンとバッチの呼び出し
終了コードを指定して終了するexit /b
別アプリケーションを起動させるstart
コマンドと引数とダブルクォーテーションの話
ダブルクォーテーションの構文破壊力
実は引数の区切りは空白だけじゃないよ
dirの出力のファイル情報をfor /fで整理する
forfilesで日付を条件に検索する
forfilesでコマンドを実行する
使い分け
forのループ処理と高度?な変数
遅延展開の沼
初期設定ファイルがあるの、かっこいいよね
forでファイルを読み込む
変数名のチェック
変数名がバッチで認識できるものかチェックする
サブルーチン名を変数で決める
各変数ごとの値のチェックをする
コマンドの紹介
ネットワークドライブ
ディレクトリ操作
ファイル・フォルダ共通
ファイル操作
コピー
入出力関連
プロセス、タスク関連
最後に
参考サイト
記事作成中に発見したバグと思われる挙動
for /f "usebackq delims="とdirを組み合わて使用したとき、cmd区切り文字で開始されるファイル、フォルダ名を正しく扱えない