トップページ > コンテンツ > コンピュータ関連その他 > Windowsコマンド > バッチファイル作成

バッチを作成するには、テキストエディタなどで記述し、.batと保存すれば良い(windowsの場合)。

変数は%変数名%のようにする。
変数に値をセットするときには
set 変数名=xxx
のような形で行う。
変数名=xxxの間に変数名 = xxxのように空白を入れると空白も意味として解釈するので注意する。
set /aだと数値扱い。
別コマンドと認識させず改行したい場合には^を付ける。

@ 該当のコマンドを標準出力に表示しない
"や^ 特殊文字のエスケープ用。%のエスケープだけは^でないとダメらしい。
echo off 以降のコマンドを表示させない。echo off自体も表示させてくないので、通常は@echo offのように使う
echo 標準出力に改行付きで表示。改行したくない場合には、SET /P test="値" <NULのような書き方をする。
if 条件 (処理内容) if文の条件はこのような形となる。条件と括弧の間に半角スペースを空けることに注意。条件文ではEQU(=)等を使う。
%errorlevel% 直前実行コマンドの成功失敗によって値が異なるので制御に使用でいる。
rem この文字以降の1行はコメント扱い
pause 実行すると自動で閉じるが、閉じないようにする
&& 複数コマンドを実行するとき。&1個の場合は単純に連続、2個の場合は前のコマンドが成功した時に後ろのコマンドが実行される
: コメントアウト
:名前 ラベルをつけることができる。goto 名前とすると:名前まで処理が移動する
%変数:~x,y 文字列の切り取り等に使える
set 変数=0%変数% 文字列の連結等は簡単にできる。左の例は変数の頭に0を付けている
%~dp0または%CD% カレントディレクトリ
%0 起動したbatファイルのパス
%1,%2 引数の1個目、2個目。
%の後に
1.~をつけると"(ダブルクォート)除く。
2.nをつけるとファイル名だけ得る。
3.xをつけると拡張子だけを得る。
4.pをつけるとパス名だけを得る等
等、引数を工夫するとファイル操作等が楽になるので利用したい。
for %%英数字 in (条件) DO (コマンド) バッチファイル上のfor文の書き方。コマンドプロンプトに直接打つ場合にはfor %英数字となるので注意。
他にもDO()の中の変数でset /A counter用変数=%counter用変数%+1のようにしても、計算結果が反映されない点に注意。そういう場合は、!で変数を囲う遅延環境変数(setlocal enabledelayexpansionのおまじないも書こう)を活用すると良い。
usebackq 空白を含むファイルを指定する時等に使う。
http://www.atmarkit.co.jp/fwin2k/operation/command008/command02.htmlが分かりやすい
tokens,delims delims(区切り文字)で区切られた文字のうち、tokensで指定した番号の文字を%%iのような変数に格納する。
http://www.ne.jp/asahi/hishidama/home/tech/windows/bat.htmlが分かりやすい
timeout 時間差での実行
call ラベル,exit /bと組み合わせることで、bat内のサブルーチン(関数記述)のようなことができる。

UNCパスについて

bat上でサーバー上のファイル処理をしようとすると、
UNCパスはサポートされていない旨のエラーを表示することがある。

回避方法としては、pushd/popd(ネットワークドライバの割当/解除)を使うか、
batはやめてPowerShellを使うとか。
最終更新:2017年03月12日 17:50