LoginSignup
0
4

More than 3 years have passed since last update.

バッチ作成の基礎

Last updated at Posted at 2020-05-21

(参考)開発に役立つBATファイルの書き方・パターン集

雛形

基本形

@echo off

rem
rem このバッチの説明
rem

rem 設定事項
set hoge="変数の値"

rem このバッチが存在するフォルダをカレントに
pushd %0\..
cls

〜処理〜

pause
exit 0
  • コマンドの先頭に@をつければ,バッチ実行時に,そのコマンド自体は表示されなくなる。
  • echo offとすれば,実行しているコマンド自体の表示を全面的にOFFにできる。
  • pushdは,ディレクトリの移動。cdコマンドだと,異なるドライブに移動できない。
  • %0 は,このバッチファイルのファイルパス。

反復系

@echo off

:start
cls

rem ----- メイン処理 -----
〜〜
rem ----- キー入力で分岐 -----

echo.
set userkey=
set /p userkey=終了する (Enter) / メイン処理を再度実行 (o + Enter) / サブ処理を実行 (p + Enter) ?
if not '%userkey%'=='' set userkey=%userkey:~0,1%
if '%userkey%'=='o' goto start
if '%userkey%'=='p' goto exec
goto quit

rem ----- サブ処理 -----

:exec

〜〜

rem ----- 終了 -----

:quit

exit
  • コロンで始まる行は,ラベル。gotoで,ラベルにジャンプすることができる。
  • set /p は,ユーザ入力値を環境変数に格納する。

構造化

ルーチンの分割

@echo off

rem メイン処理:サブルーチンのテスト
call :routine_hello hoge
call :routine_hello fuga
call :routine_hello boo


pause
rem メイン処理はここで終了
exit



rem 引数を受け取って,Hello と表示するルーチン。
:routine_hello

echo Hello, %1!

exit /b
  • ラベルをgotoではなくcallで呼び出せば,サブルーチンになる。
  • サブルーチンには,そのサブルーチン独自の引数を渡すことが可能。
  • サブルーチン内では%1などで参照。
  • サブルーチンからメインルーチンに戻る際には,exit /b する。/b オプションを付けないと,バッチ全体が終了してしまう。
  • ルーチンからの戻り値について,数値しか返却できず,大したことはできない。
  • バッチ内のルーチンから,呼び出し元に値を返却するには,errorlevelを使う。

実行ファイルや実行プロセスの分割

  • .batファイル自体を分割。
  • 呼び出し方法には2つある:
    call バッチファイル名
    start バッチファイル名
  • callでラベルを指定すればサブルーチンを呼び出せたのと同じように,別バッチを呼び出せる。
  • startで呼び出した場合は,プロセスも分かれる。

小ネタ

日付処理

set date_tmp=%date:/=%
set time_tmp=%time: =0%
set yyyy=%date_tmp:~0,4%
set yy=%date_tmp:~2,2%
set mm=%date_tmp:~4,2%
set dd=%date_tmp:~6,2%
set hh=%time_tmp:~0,2%
set mi=%time_tmp:~3,2%
set ss=%time_tmp:~6,2%
set sss=%time_tmp:~9,2%

rem yyyymmddhhmisssss
set datetime=%yyyy%%mm%%dd%%hh%%mi%%ss%%sss%

rem yyyy/mm/dd hh:mi:ss:sss
set datetime=%yyyy%/%mm%/%dd% %hh%:%mi%:%ss%:%sss%
0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4