まとめ
シェルスクリプトに慣れた人に贈るバッチファイルの書き方 | hymkor
リダイレクト/パイプ/文字列の操作/ファイルの操作まとめ | Web Creators Hub
分岐と選択でまとまるバッチファイルの作成 | Kibekin Blog
Tips
バッチファイルを書くときに気をつけていること – Qiita
バッチファイルでの試行錯誤を回避するためのメモ – Qiita
cmd.exe のコマンドラインの仕様を解析してみた | 永遠に未完成
バッチファイルの置かれたディレクトリを取得する
参考:
「%~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
: 拡張子を取り除いたファイル名
参考:
ゼロ埋め
数字をゼロ埋めして4桁の文字列にフォーマットする。
setlocal enabledelayedexpansion for /L %%i in (1, 1, 10) do ( set "n=0000%%i" set "n=!n:~-4!" echo Loop_!n! )
参考:
バッチファイルでゼロ埋めをする時に遅延展開でハマった – Qiita
引数の数を判定する
参考:
バッチ起動時の引数の個数の数え方 | DOS プロンプト活用相談室 LOG
バッチファイル内で引数が渡されているか確認するサンプルプログラム | FAQ Center
日時を出力する
echo
コマンドで日時を表示する。
>echo %DATE% %TIME%
参考:
date / time – 日付と時刻 | 知識ゼロからの Windows バッチファイル超入門
コマンドの実行結果を変数に入れる
参考:
cmd.exe で Bash のバックティックのようにコマンドの出力を埋め込む – Qiita
バッチファイルでコマンドの実行結果を変数に格納する | まくまくノート
コマンドの実行結果を変数にセットする | コマンドプロンプトの予感
変数に空白文字を追加する
参考:
バッチファイルの環境変数定義の際、頭に空白を入れたい – Microsoft Technet フォーラム
特定のプロセスが起動しているか確認する
参考:
バッチファイルでプロセスチェックを行う方法 | 俺の開発研究所
管理者権限で実行する
管理者権限でバッチファイルを実行した場合、システムディレクトリから実行される。
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
ファイルのパスに空白が含まれるとエラーになる
参考:
バッチファイルでのスペースを含んだ文字列の取り扱い | 知識ゼロからの Windows バッチファイル超入門
CMD.exe でパス名に空白が入ってどうしても解決できないときのオカルト技 – Qiita
コマンドプロンプトで「コマンドの構文が間違っています」というエラーになります – Yahoo! 知恵袋
日本語が文字化けする
文字コードに「UTF-8」を使用する。
chcp 65001
Code language: DOS .bat (dos)
または、「Shift-JIS」を使用する。
chcp 932
Code language: DOS .bat (dos)
ドキュメント:
コードページ識別子 | Microsoft Docs [公式]
参考:
UTF-8 のバッチファイルが文字化けする時の対処 3選 | なゆたり
文字コードを変更する方法を解説します | たいらのエンジニアノート
コマンドプロンプトで bat ファイルを実行したら文字化けする | t8
特殊文字/ダメ文字
ファイル名に使えない文字
<
: 小なり記号>
: 大なり記号:
: コロン"
: 二重引用符/
: スラッシュ\
: バックスラッシュ/円記号|
: 縦棒?
: 疑問符*
: アスタリスク
特殊文字
パスに含まれる場合、クォーテーションで囲う必要がある。
&
: アンパサンド()
: 丸括弧[]
: 角括弧{}
: 波括弧^
: キャレット=
: イコール;
: セミコロン!
: 感嘆符'
: 引用符+
: 正符号,
: コンマ`
: バッククォート~
: チルダ
ドキュメント:
ファイル/パス/名前空間の名前付け | Microsoft Learn [公式]
参考:
バッチファイルを書くときに気をつけていること – Qiita
バッチファイルでファイル名に感嘆符があるときの処理 – Qiita
Windows でファイルやフォルダーに使わない方がいい文字 | ASCII.jp
日本語ファイル名が扱えない
現象:
指定したファイルが見つからない旨のエラーが発生して、ファイルが処理できない。
File Not Found The system cannot find the file specified.
原因:
ファイルのパスに含まれている日本語が文字化けしている。
対処法:
- 全体を通して、適切な文字コードを使用する。
- 「Shift-JIS」を使用する。
手順
- バッチファイルの文字コードを Shift-JIS に設定して保存する。
- バッチファイル内で実行時に使用する文字コードを指定する。
使用する文字コードを「Shift-JIS」に切り替える。
chcp 932
参考:
バッチファイルを起動すると文字化けする現象の対策 – Qiita
バッチで日本語ファイルが開けない/文字化けする時の対処法 | Web Work Plus
コマンドプロンプトで bat ファイルを実行したら文字化けする | ライトリ
コマンドプロンプトで漢字表記のシステムファイルが扱えない – Visual Studio フォーラム
UTF-8
参考:
Windows 11、Windows 10 の 21H2 からファイル名の文字コードの扱いが UTF-8 に | エーオーシステム
ファイルの文字コードを変換したい
参考:
えっ、UTF-8 じゃなくて Shift-JIS で? お手軽文字コード変換方法まとめ | @IT
tee コマンド
参考:
バッチファイルで作る tee コマンド | Windows Script Programming
コマンドプロンプトで画面出力した上でログにも出力したい – スタック・オーバーフロー
ZIP ファイルを作成する
- PowerShell の
Compress-Archive
コマンドを呼び出す。
ドキュメント:
Compress-Archive – PowerShell | Microsoft Learn [公式]
参考: