標準入力
d:id:youandi:20080825#p2
F77->F90の変換プログラムが標準入力で変換対象のソースコードファイル名を受け取る仕組みになっているんですが、これを上手い具合にプログラムから指定出来ないモンかと調べてみる。
shellで起動させた実行ファイルに引数を渡すには?
http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200703/07030154.txt
んで見つかったのか上記の情報で、「hoge.f」を指定するのに以下のような感じで制御出来ました。
Set oExec = wshShell.Exec("to_f90.exe") oExec.Stdin.WriteLine "hoge"
バッチファイルで入力ファイル一覧を作成して、VBScriptで一括処理。
@ECHO OFF CD /D %~dp0 REM 処理対象拡張子 SET EXT_TYPE=*.f REM ログファイル名 SET TGT_FILE=target.txt ECHO 処理対象ファイルの検索中... DEL /Q "%TGT_FILE%" REM サブディレクトリを含めて処理を行う FOR /R %%i IN (%EXT_TYPE%) DO ( REM 処理ファイル名の出力 ECHO %%i>>"%TGT_FILE%" ) @PAUSE CALL cscript.exe /NOLOGO to_F90v2.vbs @PAUSE
Option Explicit Const ForReading = 1 Const ForWriting = 2 Dim wshShell Dim oExec Dim oFso ' ############################################################################## Set wshShell = CreateObject("WScript.Shell") Set oExec = wshShell.Exec("to_F90.exe") Set oFso = CreateObject("Scripting.FileSystemObject") Call ExecConvert ' コンソールに表示 Do Until oExec.StdOut.AtEndOfStream ' WScript.Echo oExec.StdOut.ReadLine Loop Set oExec = Nothing Set wshShell = Nothing Set oFso = Nothing '**処理終了** WScript.Quit Sub ExecConvert() Dim oTxtFileIn Dim oTxtFileOut Dim strLine Set oTxtFileIn = oFso.OpenTextFile("target.txt", ForReading) ' Set oTxtFileOut = oFso.CreateTextFile("result.txt", True) ' Do Until oExec.StdOut.AtEndOfStream ' oTxtFileOut.WriteLine oExec.StdOut.ReadLine ' Loop ' oTxtFileOut.WriteBlankLines(1) Do Until oTxtFileIn.AtEndOfStream strLine = oTxtFileIn.ReadLine oExec.Stdin.WriteLine strLine WScript.Echo strLine WScript.Sleep(100) ' Do Until oExec.StdOut.AtEndOfStream ' oTxtFileOut.WriteLine oExec.StdOut.ReadLine ' Loop ' oTxtFileOut.WriteBlankLines(1) Loop ' oTxtFileOut.Close WScript.Echo "読み込み終了" Set oTxtFileIn = Nothing End Sub