バッチプログラム

●バッチファイル
プロンプト上で入力する一連のコマンドを記述したテキストファイルで、拡張子を.batまたは、.cmdとすることで実行ができる。
※メモ帳等で作成する場合は、文字コードをANSIにすること。デフォルトはUTF-8になっており実行時に文字化けが発生します。
 UTF-8で記述したい場合は、chcp 65001で文字コードの変更をします。

●記述方法
・コマンドの先頭に@をつけた場合、そのコマンドは非表示で実行される。
・コマンドの末尾に/?オプションを指定するとヘルプを表示する。
・コマンドからコマンドへ結果を渡す場合には、|(パイプ)を使用する。
・変数 代入される値によって型が自動的に設定される。大文字、小文字の区別はない。
▼ サンプルコード
・環境変数 PATH、ERRORLEVEL、PROMPT、RANDOMなどがあります。setで一覧を表示できます。
・引数の取得 %1、%2、%3、・・・で取得できます。%0はコマンド名になります。shiftで引数の値をシフトできます。
・演算子 +、-、*、/、%、&、|、^、<<、>>、+=、-=、*=、/=、%=、…
▼ サンプルコード
・比較演算子 ==またはequ(=)、neq(!=)、lss(<)、leq(<=)、、gtr(>)、geq(>=)、not
・数値 0xで始まる数値は16進数、0で始まる数値は8進数となる。
・文字列操作
▼ サンプルコード
・ファイルの作成、追記 >、>>
▼ サンプルコード

●制御構文
・if
if %a% equ 0 echo aは0です
if %a%==1 (
  echo aは1です
) else if %a%==2 (
  echo aは2です
) else (
  echo aは1、2以外です
)

if not %str%==abc echo abcでない
if /i %str%==a echo aまたはAです

if not exist test.txt echo testファイルが見つかりません

if ERRORLEVEL 1 echo コマンドの終了コードが1以上です
・for
rem 0から+1ずつ9までループ
for /l %%a in (0, 1, 9) do (
  echo %%a
)

rem 拡張子.txtファイルを全て表示
for %%f in (*.txt) do echo %%f

rem サブフォルダを含む拡張子.txtファイルを全て表示
for /r %%f in (*.txt) do echo %%f

rem aで始まるフォルダを全て表示
for /d %%d in (a*) do echo %%d

rem TXTファイルの中身を1行ずつ表示
for /f %%a in (input.txt) do echo %%a

rem TXTファイルの中身を表示。#で始まる行を無視
for /f "eol=#" %%a in (input.txt) do echo %%a

rem CSVファイルの中身を表示。先頭行を無視、カンマ区切り、項目1と2
for /f "skip=1 delims=, tokens=1,2" %%a in (input.csv) do echo %%a / %%b

rem コマンドの実行結果を表示
for /f %%a in ('dir /b') do echo %%a

rem 変数の遅延展開
setlocal enabledelayedexpansion
set count=0
for /f %%a in (input.txt) do (
  set line=%%a
  echo !line!>>output.txt
  set /a count+=1
  echo !count!
)
endlocal

・goto
goto label
:label
・call
call test.bat arg
call :label arg
:label
echo %1
exit /b 1    errorlevelに1を返す

●コマンド一覧
remコメント行として扱われる。
@echo off以降のコマンドは全て非表示になります。
echo画面に出力する。
pauseキー入力待ち状態にする。
choice指定したキー入力を判定する。デフォルトはY,N、/cオプションでキー指定。値はerrorlevelに格納。
set変数を設定する。環境変数の一覧表示。/aオプションで計算する。/pオプションでキー入力を要求する。
setlocal同一バッチファイル内だけで有効な変数を設定する。
callバッチファイルの呼び出し。サブルーチンの呼び出し。
startバッチファイルを呼び出し終了を待たずに次のコマンドへ移ります。
cls画面表示をクリア。
color画面の背景と文字の色を変更。
cdカレントディレクトリの変更。
copyファイルをコピー。
xcopyより高度なファイルコピー。
replaceバックアップ用コピー。
delファイル・フォルダを削除。
dirファイル・フォルダ一覧を表示。
fcファイルの内容を行単位で比較。
compファイルの内容を文字単位で比較。
findファイル内の文字列を検索。
findstrより高度なファイル内の文字列を検索。
mdフォルダ作成。
moveファイル・フォルダを移動。
renameファイル・フォルダ名を変更。
rdフォルダを削除。
sortファイルの内容を並べ替え。ファイル名、フォルダ名を並べ替え。
shift引数をずらして格納しなおす。
titleコマンドプロンプト画面のタイトル表示を変更。
treeフォルダ・ファイル構成をツリー形式で表示。
typeファイル内容を表示。
moreファイルの内容を一画面分ずつ表示。


ページトップへ戻る