SQLの窓

2014年09月27日


バッチファイル内の Call コマンドによるサブルーチンの呼び出し( errorlevel を戻して if で判断する )

コマンドプロントの拡張機能である、ラベルによる呼び出しは、デフォルトで有効になっています
CALL :ラベル 引数
以下に引数errorlevel を使用したサンプルを示します
@echo off
REM ****************************************
REM コマンドの先頭の @ は、そのコマンドの表示を抑制
REM echo off は以降のコマンドの表示を抑制
REM ****************************************

REM ****************************************
REM サブルーチンの呼び出し
REM ****************************************
call :GetDay 09
if errorlevel 1 ( 
	echo 現在の月は引数と一致しました & date /T
) else ( 
	echo 現在は引数以外の月です & date /T
)

REM ****************************************
REM 処理の終わり
REM ****************************************
goto end



REM ****************************************
REM サブルーチン
REM date /t で 2009/08/16 というような表示を / で区切り
REM 2番目の 08 を %%i へセットする
REM ****************************************
:GetDay
@for /F "delims=/ tokens=2" %%i in ('date /t') do (
	REM 現在が引数と一致する場合
	if "%%i"=="%1" (
		REM サブルーチンからの脱出と同時に errorlevel のセット
		exit /B 1
	)
)
REM 一致しなかった場合のサブルーチンからの脱出
exit /B 0

REM ****************************************
REM 記述の終わり
REM ****************************************
:end



REM ****************************************
REM 【補足】
REM
REM date /t の /t と call :ラベルは何れもデフォルトで有効な
REM コマンド拡張機能 です。
REM ****************************************

要点

:GetDay にジャンプして、exit コマンドで元へ戻ります。
exit /B で cmd.exe を終了するのでは無く制御を call の呼び出し元へ移します
exit /B 数値 によって、結果を戻り値として返します

if や else の結果で複数コマンドを実行したい場合は & でつなげます。
( if文は キーワードが行の先頭になければ複数行で記述できますが、コマンドは & でつなげる場合1行で記述する必要があります )


関連する記事


posted by lightbox at 2014-09-27 13:54 | コマンド : バッチファイル | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
PHP正規表現チェッカー
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり