次の項目は別ページに分割しました。
関連ページ:
コマンドプロンプトの基本的な使い方は次のページにまとめています。
概要
参考:
基本
参考:
引数
%1
、%2
、%3
、…: 引数が順に格納される
参考:
バッチ実行時に引数を渡す方法 | 社内 SE の IT メモブログ
バッチファイルで引数を使う | 知識ゼロからの Windows バッチファイル超入門
変数
変数に値を設定する時は set
を使い、参照する時は変数名を2つの %
で囲む。
set var=42
echo %var%
Code language: DOS .bat (dos)
ドキュメント:
参考:
バッチファイルで変数を使う | 知識ゼロからの Windows バッチファイル超入門
「%」 (パーセント) | Programming Field
バッチファイルで、set コマンドを使いこなすための5つの豆知識 – Qiita
set コマンドのオプション /a 有り、無しの違い | FAQ Center
set – 変数の設定/計算/ユーザーからの入力情報の取得 | 知識ゼロからの Windows バッチファイル超入門
defining and using a variable in batch file – Stack Overflow
variables with reserved character % – Stack Overflow
How to assign output from command to variable in command prompt – Stack Overflow
How to set a variable in bat / cmd? – Stack Overflow
setting variable then echoing fails – Stack Overflow
演算
変数を用いて演算を実行し、結果を変数に格納する。
set /a y=%a%*%x%*%x%+%b%*%x%+%c%
Code language: DOS .bat (dos)
演算子
+
: 加算-
: 減算*
: 乗算/
: 除算%
: 剰余+=
: 加算代入-=
: 減算代入
参考:
バッチファイル内で計算を行う | 知識ゼロからの Windows バッチファイル超入門
set コマンドのオプション /a 有り、無しの違い | FAQ Center
コマンドプロンプトで計算を行う方法を紹介! | Aprico
環境変数を定義する
@set PATH=%PATH%;"C\path\to\my_tools"
@set GREETING=Hello, John
Code language: DOS .bat (dos)
ドキュメント:
参考:
SET – 環境変数の値の参照と設定 | JavaDrive
set – 変数の設定/計算/ユーザーからの入力情報の取得 | 知識ゼロからの Windows バッチファイル超入門
画面に出力する (echo)
@echo off
echo Hello, World
Code language: DOS .bat (dos)
ドキュメント:
参考:
echo – 文字列の出力 | 知識ゼロからの Windows バッチファイル超入門
echo の出力の最後にスペースを出力しない方法 | うしくんの日々
テキストファイルの改行やスペースが消えてしまう – スタック・オーバーフロー
改行なしで空白のみを出力させる方法はありますか? – Yahoo! 知恵袋
コマンド自体を出力しない
コマンドの前に @
を付けるとそのコマンド自体を出力しない。
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つのコマンドを複数行に分ける場合、次の行に繋げる行末にキャレット ^
を付ける。
参考:
ひとつのコマンドを複数行に分けて書く方法 | Project Group
長い1行の処理を改行を入れて複数行に分けて書きたい | みちしるべ
コマンドを続けて実行する
&
: 一行で複数のコマンドを実行する&&
: 前のコマンドが成功したら、次のコマンドを実行する||
: 前のコマンドが失敗したら、次のコマンドを実行する
set
set
コマンドで設定した環境変数を同じ行内で参照する場合は、コマンド呼び出しに call
コマンドを使用する。
set "greeting=Hello, World" & call echo %greeting%
参考:
バッチファイルで1コマンドを複数行にわたって記述したい場合 – Qiita
How do I run two commands in one line in CMD? – Stack Overflow
Multiple commands on a single line in a batch file – Stack Overflow
How to run multiple commands in one line using cmd – Stack Overflow
Using a variable set in the same line of a one-liner – Stack Overflow
run two commands in one windows cmd line, one command is SET command – Stack Overflow
文字列の一部を取り出す
参考:
バッチで文字列の切り出しを行う | ぱーくん plus idea
How to extract part of a string in batch file? – Super User
文字列を連結する
set
コマンドで2つの変数に格納された文字列を連結する。
set str3=%str1%%str2%
Code language: DOS .bat (dos)
参考:
文字列を連結するサンプルプログラム | FAQ Center
文字列を分割する
for
コマンドを使う
参考:
バッチで for 文を使って文字列を分割する | ITメモブログ
バッチファイルの split/for /F で文字列分割の使い方 | lisz-works
How to split a string by spaces in a Windows batch file? – Stack Overflow
コメント (rem)
@rem
コマンドの後にコメントを記述する。
@rem Write comments here...
Code language: DOS .bat (dos)
参考:
クォーテーション
引数からクォーテーションを取り除くにはチルダを使う。
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
エスケープ
- エスケープ記号:
^
- パーセント記号
%
をエスケープする → 「%%
」 (パーセント記号を2つ重ねる)
参考:
バッチファイルのエスケープ文字は ^ だ!! | みちしるべ
変数に特殊記号を代入するとき、記号の前に ^ (ハット) をつけても代入されない – Microsoft コミュニティ
サブルーチン
参考:
call / setlocal – バッチファイルでサブルーチンを定義する、別のバッチファイルを呼び出す | まくまくノート
バッチファイルでサブルーチンを使用する | 知識ゼロからの Windows バッチファイル超入門
ローカル変数
ドキュメント:
setlocal | Microsoft Learn [公式]
endlocal | Microsoft Learn [公式]
参考:
setlocal / endlocal – ローカル変数を使う | 知識ゼロからの Windows バッチファイル超入門
exit
exit /b
Code language: DOS .bat (dos)
参考:
exit /b – バッチファイルで戻り値を得る | 知識ゼロからの Windows バッチファイル超入門
exit – コマンドプロンプトやサブルーチンを終了する | 知識ゼロからの Windows バッチファイル超入門
EXIT – コマンドプロンプトまたはバッチファイルを終了 | JavaDrive
バックグラウンドで実行する
参考:
バッチファイルを実行する時に黒いコマンドプロンプト画面を表示しない方法 | amaoto-log
実行を一時停止する
参考:
PAUSE – キーが押されるまで処理を一時停止 | JavaDrive
スリープ
参考:
timeout / sleep コマンドでバッチファイルの実行を一時停止する | @IT
まとめ
シェルスクリプトに慣れた人に贈るバッチファイルの書き方 | hymkor
リダイレクト/パイプ/文字列の操作/ファイルの操作まとめ | Web Creators Hub