バッチファイル

最終更新日15 Sep 2017 02:57

基本

  • 命令は大文字で書いても小文字で書いてもどっちでもいい
  • やってるコマンドはデフォルトでは常に今なにやってるかをコマンドプロンプトに表示される。
  • 命令 半角スペース空けて 内容というかんじで書く。
  • 使う変数は基本的に環境変数
  • 日本語はShift_JISじゃないと文字化けする

文字を出力する

echo "文字列"

echo以外の出力をOffにする

@echo off

環境変数の作成

set 変数名=値

大文字で書くのが慣習の様子

  • !注…=の前後にスペースを空けてはいけない

変数を使うとき

echo %変数名%

一覧

echo プリントする
call 別のバッチファイルを呼び出す
cls 画面クリア
pause 終了時にコマンドプロンプトがすぐ消えるのを防ぐ
pushd 作業ディレクトリを移動する cdコマンドと違ってpopdで移動前に簡単に戻れる。
rem コメント
set 環境変数を定義する

記号系

:ラベル名 ラベル 「goto ラベル名」と書くとそこへ飛ぶ
%変数名% 変数を使う
@ これを冒頭につければ実行時にそのコマンドは表示されない

コマンドライン引数(.batファイルにドロップで認識)

%* すべての引数
%1 最初のコマンドライン引数
%2 2番目のコマンドライン引数

コメントアウト

rem コメントの内容

その他構文

  • 入れ子は出来る
  • setやechoなどのコマンド名は大文字でも小文字でもどっちで書いてもいい。

サンプル

@echo off
rem 遅延環境変数に対応させる
setlocal ENABLEDELAYEDEXPANSION
rem .svg拡張子のあるものを列挙
for %%f in (*.svg) do (
  set emffile = %%~nf.emf
  if not exist %%~nf.emf (
rem .emfファイルがまだできてないのだけコマンド実行する
  set c=inkscape -f  %%f -m %%~nf.emf
  echo !c!
  call !c!
  )
)
pause

感想

Macでいうところのsh シェルスクリプト?シェルスクリプトの方が読みやすい。
基本的に構文が古臭くて読みにくい。。
が、押すだけ実行可能なので使う側からしたら便利なので広く使用されている。
.batからpythonを呼ぶという手法をとる手もある。その場合配るライブラリにはpythonのバイナリを含む必要がある。(せいぜい33MBぐらい)
UE4のソースコードの.batではfor分を使うか、中で別の.exeを引数付きで呼ぶ、というような内容になっている。

なので基本的に.batの中に複雑な処理を書いて後でわからなくなるよりも、
.exeやpythonを作って呼び出すという使い方がよさそう。

Bibliography
1. language-batch…batchファイルの構文をシンタックスハイライトしてくれるAtomのパッケージ


ファイル

サポートサイト Wikidot.com