'EEM-MOMポスト処理バッチ処理プログラム:mom_post.vbs '株式会社EEM ' '目的: '指定したフォルダにある.outファイルをすべてポスト処理し、 '図形ファイルを連結しev_all.ev2ファイルに出力する。 'post.logファイルを連結しpost_all.logファイルに出力する。 ' '使用法: '> cscript mom_post.vbs データフォルダ '> ev ev_all.ev2 '(注意)ポスト処理制御を予め行っておくこと(post.datができる) Option Explicit Const solout = "sol.out" '個々の計算結果ファイル Const ev2 = "ev.ev2" '個々の図形出力ファイル Const postlog = "post.log" '個々のlogファイル Const program = "mom3.exe" 'ポスト処理プログラム Const postdat = "post.dat" 'ポスト処理制御ファイル Const outev2 = "ev_all.ev2" '出力される図形ファイル Const outlog = "post_all.log" '出力されるlogファイル Dim objShell, objFS, objFolder, objEv2, objLog, objText Dim fn, num, datafolder, cmd 'フォルダ名を引数から取得する If WScript.Arguments.Count = 1 Then datafolder = WScript.Arguments(0) Else WScript.Echo "使い方: cscript mom_post.vbs データフォルダ" WScript.Quit 1 End If Set objShell = CreateObject("Wscript.Shell") Set objFS = CreateObject("Scripting.FileSystemObject") 'エラーチェック If Not objFS.FileExists(program) Then WScript.Echo "ファイル " & program & " が存在しません" WScript.Quit 1 End If If Not objFS.FileExists(postdat) Then WScript.Echo "ファイル " & postdat & " が存在しません。先に[ポスト処理制御]を行ってください" WScript.Quit 1 End If 'フォルダ If Not objFS.FolderExists(datafolder) Then WScript.Echo "フォルダ " & datafolder & " が存在しません" WScript.Quit 1 End If Set objFolder = objFS.GetFolder(datafolder) '出力ファイル(ev2) If objFS.FileExists(outev2) Then objFS.DeleteFile outev2 End If Set objEv2 = objFS.CreateTextFile(outev2) '出力ファイル(log) If objFS.FileExists(outlog) Then objFS.DeleteFile outlog End If Set objLog = objFS.CreateTextFile(outlog) num = 0 For Each fn In objFolder.Files '拡張子が"out"のファイルのみ If objFS.GetExtensionName(fn) = "out" Then 'ファイル名表示 num = num + 1 WScript.Echo num & " " & objFS.GetFileName(fn) '計算結果ファイルをsol.outにコピーする If objFS.FileExists(solout) Then objFS.DeleteFile solout End If objFS.CopyFile datafolder + "\" + objFS.GetBaseName(fn) + ".out", solout 'ポスト処理 cmd = program objShell.Run cmd, 0, True '0:ウィンドウなし、True:同期 '出力図形ファイル連結 If objFS.FileExists(ev2) Then Set objText = objFS.OpenTextFile(ev2, 1) '1 : read only objEv2.Write objText.ReadAll End If '出力logファイル連結 If objFS.FileExists(postlog) Then objLog.WriteLine num & ":" & objFS.GetBaseName(fn) 'ファイル名 Set objText = objFS.OpenTextFile(postlog, 1) '1 : read only objLog.Write objText.ReadAll End If End If Next If num = 0 Then WScript.Echo "outファイルがありません" End If