Windowsバッチ(MS-DOS)
Windowsバッチ
Windows上の処理を自動化するプログラム
正確にはMS-DOS上の処理の自動化
Windowsの多彩な機能の操作はバッチコマンドでは実現できない
コマンドプロンプトにおけるMS-DOSコマンドをまとめて記述・保存しておく事で、まとめて実行できる
Linuxにおけるシェルスクリプト
MS-DOS、Linuxコマンドについては「バッチコマンド(Linux/DOS/PowerShell)」参照
コマンド
コマンド | 機能 |
---|---|
pause | バッチ中断 |
exit | コマンドプロンプト終了 |
@~ | 画面非表示 |
timeout | 待機 |
バッチ中断
pause
コマンドプロンプト終了
exit
画面非表示
@~
@echo、@if ~等
TIMEOUT /T 待機時間(秒)
TIMEOUT /T 60
TIMEOUT /T -1 ※無制限
コマンドパラメータ
パラメータ | 機能 |
---|---|
/E | ファイルが存在しなくてもディレクトリごとコピー |
/Y | 同名のファイルが存在する場合、自動で上書き |
/D | コピー先に同名のファイルが存在する場合は更新日が新しいファイルのみコピー |
/q | 確認メッセージを表示しない |
/p | 確認メッセージを表示する |
組込変数
変数 | 機能 |
---|---|
%~dp0 | 実行ファイルが置かれているカレントディレクトリ |
%0 | 実行ファイルパス |
%~n0 | ファイル名 |
%~x0 | 拡張子 |
起動パラメータ
受取
> test.bat 5 ABC ""
文字列は"で囲まない
※test.bat
set prm1 = %1
set prm2 = %2
set prm3 = %3
SQL*Plus実行時
> test.bat 5 ABC ""
※test.bat
sqlplus (接続情報) @C:\test.sql %1 %2 %3
起動パラメータをそのまま渡す
エラーハンドリング
%errorlevel%
ms-dos操作の結果が自動的に格納される組込み変数
明示的に値をセットする事も可能
parent.batからchild.batを呼び出す場合
※parent.bat
call c:\child.bat
child.batでの終了結果に応じて分岐
if %errorlevel% neq 0 goto NG
:OK
@echo OK
exit
*NG
@echo NG
exit
※child.bat
変数をクリア
set errorlevel =
~
errorlevelに正常(0)をセットして終了
exit /b 0
~
errorlevelに異常(1)をセットして終了
exit /b 1
SQL*Plusの戻り値
SQL*Plusを実行
更にPL/SQLを記述した外部スクリプトを実行する場合
> SQLPLUS (接続情報) @(スクリプトファイル名)
if %errorlevel% neq 0 goto NG
「Oracle SQL*Plus使用方法」参照
PSQLの戻り値
psql -d ~ -h ~ -p ~ -U ~ -f ~.sql
if %errorlevel% neq 0 (
~
) else (
~
)
「SQL DML:制御文/設定」参照
制御文
For文
プログラム言語 制御文/For文