バッチ基礎
Windowsバッチの基礎知識です。
Windowsバッチの例
test.bat
@echo off
setlocal
rem xに123を代入する
set x=123
rem xの値を表示する
echo %x%
endlocal
exit /b 0
(実行例)
C:¥>test.bat
123
各行の解説
- @echo off:各コマンドの実行結果を表示しない。バッチファイルの1行目にはほぼ必須のコマンドです。
- setlocal:環境変数のローカル化開始。これをやっておくとバッチ内で設定した環境変数はバッチ外に影響を及ぼしません。
- rem:コメント行
- set x=123:環境変数xに123を代入
- rem:コメント行
- echo %x%:環境変数xの値を画面に表示
- endlocal:環境変数のローカル化終了
- exit /b 0:バッチの実行を、終了コード0にて終了
endlocalは省略しても暗黙的に実行されます。
備考
- バッチファイルの拡張子は、.batまたは .cmdを使用します。
- 文字コードはSJIS (Shift-JIS)で作成します。
- 上のサンプルでも記述してある @echo offとsetlocalは、基本的にバッチファイルお決まりの記述です。
バッチに引数を渡す
実行するバッチファイルに引数を渡したい場合は、
バッチ名の後ろに半角スペース区切りで引数1 引数2 ...という感じで渡せます。
バッチ内で引数の値を取得するには、%1、%2 ... という感じで取得できます。
%0でバッチファイル名を取得できます。
%*で引数に指定されて全ての値を取得できます。
例)引数に渡した値を表示する
(test.bat)
@echo off
echo %0
echo %1
echo %2
echo %3
echo %*
pause
実行例
C:¥>test.bat orange apple banana
test.bat
orange
apple
banana
orange apple banana
続行するには何かキーを押してください . . .
引数は最大9つまで指定できます。(%1~%9)
「@」アットマーク
バッチプログラム内において、コマンドの先頭に「@」を付けると実行するコマンドが非表示になります。
例)@なしの場合
(sample01.bat)
echo foo
echo bar
pause
実行例
C:¥>echo foo
foo
C:¥>echo bar
bar
C:¥>pause
続行するには何かキーを押してください . . .
@なしだと、実行したコマンドが表示されます。
例)@ありの場合
(sample02.bat)
@echo foo
@echo bar
@pause
実行例
foo
bar
続行するには何かキーを押してください . . .
@なしだと、実行したコマンドが表示されません。
しかし、すべてのコマンドの先頭に@を付けるのは面倒です。
このような場合は、バッチファイルの先頭に「@echo off」と記載すれば、すべてのコマンドの先頭に@を付けたことになります。
例)バッチファイルの1行目に@echo off を記載した場合
(sample03.bat)
@echo off
echo foo
echo bar
pause
実行例
foo
bar
続行するには何かキーを押してください . . .
実行コマンドはすべて表示されません。
実行中のバッチがあるフォルダを取得する(%~dp0)
バッチプログラム内でバッチがあるフォルダを取得するには「%~dp0」を使用します。
例)実行中バッチがあるフォルダを表示して移動する
(test.bat)
@echo off
echo %~dp0
cd /d %~dp0
pause
「%~dp0」はバッチプログラムの中で使用できます。