いまだにDOSバッチを組んでいるのサ、ヤレヤレだぜ
DOSバッチ内で直前の一連のコマンドの実行結果を、例えば正常終了ならば
ECHO OK > FLAG_OK.FLG
のようにテキストファイルにしているので(後でのぞけるように)
その結果のOK又はNGで後続の処理を分岐させたい。
というのが必要になったので、CheckOKNG.vbsとして作成してみた。
Option Explicit '定数の宣言 Const ForReading = 1 '読み込み Const ForWriting = 2 '書きこみ(上書きモード) Const ForAppending = 8 '書きこみ(追記モード) Const DataASCII = False 'ASCII Const DataUnicode = True 'Unicode Const DataUseDefault = False 'システム規定値 Dim strString strString = "OK" '戻り値(の元) Dim objParm Set objParm = Wscript.Arguments '引数パラメタ情報の保存 If objParm.Count < 1 Then WScript.echo "引数パラメタが正しくありません" ElseIf objParm.Count > 1 Then WScript.echo "引数パラメタが多過ぎです" Else Call prcExecMain End If Set objParm = Nothing If strString = "OK" Then Wscript.Quit(0) 'OK正常 Else Wscript.Quit(1) 'NG何か正常でない End If '============================================================= 'テキストファイルの読み込みと判定 '============================================================= Sub prcExecMain() 'On Error Resume Next Dim objFileSys Dim objInFile Dim intSep Dim strScriptPath Dim strFileName Dim strFilePath Dim strRecord strFileName = objParm(0) 'ファイル名※が渡されている 'このVBSプログラムが保存されているフォルダ=パス情報 strScriptPath = Replace(WScript.ScriptFullName,WScript.ScriptName,"") Set objFileSys = CreateObject("Scripting.FileSystemObject") 'ファイル名※を読み込むフルパスを組み立てる strFilePath = objFileSys.BuildPath(strScriptPath,strFileName) Set objInFile = objFileSys.OpenTextFile(strFilePath,ForReading,DataASCII) If Err.Number=0 Then Do Until objInFile.AtEndOfStream = true strRecord = objInFile.ReadLine strString = Mid(strRecord, 1, 2) '先頭2文字を切り出す Exit Do '読み込むレコードは1件のみ Loop objInFile.Close Else Wscript.Echo strScriptPath & "にファイル" & strFileName & "がありません" strString = "NO" end if Set objFileSys = Nothing Set objInFile = Nothing End Sub
ECHO OFF CheckOKNG.vbs "FLAG_OK.FLG" ECHO ERRORLEVEL=%errorlevel% IF ERRORLEVEL 1 GOTO :TAG_ERROR :TAG_NORMAL echo "OKだよ" goto :TAG_EXIT :TAG_ERROR echo "NGだよ" :TAG_EXIT echo %ERRORLEVEL% pause
(参考)2.5 テキストファイルの行単位の読み込み
http://www.happy2-island.com/vbs/cafe02/capter00205.shtml