複数の自作バッチプロラムの共有ログを採取する方法
複数の自作バッチプロラムの共有ログを採取する方法
os:windows xp
バッチプログラムの開始前後にログ出力をします。
普通にバッティングせずに動くと、後述のサンプル・ログ(1)のように綺麗にとれます。
しかし、
バッティングした際に正しく取れません。
dos batファイルでやったところ、掴んでいるときに後から行った方の出力がされません。
→ サンプル・ログ(1)
それならと、
vbsで同じ事を作ってみました。
すると、掴んでいるときに後から行った方がエラーでコケました。
ファイルの定義やオープンの時に「掴んでいたら無制限に待つ」とか「タイムアウトまで待つ」とか、そういう事はできるでしょうか?
複数のアプリから同じファイルにIOするには仕組みとして何かが足りないのでしょうか?
以上、よろしくお願いします。
■サンプル・ログ
(1)
===== FILE_TIME.log =====
2010/03/05- 9:00:00.00,処理1,開始
2010/03/05- 9:00:00.00,処理2,開始
2010/03/05- 9:30:00.00,処理1,終了
2010/03/05- 9:40:00.00,処理2,終了
===== FILE_TIME.log =====
(2)
===== FILE_TIME.log =====
2010/03/05- 9:00:00.00,処理1,開始
2010/03/05- 9:30:00.00,処理1,終了
2010/03/05- 9:40:00.00,処理2,終了
===== FILE_TIME.log =====
■サンプル・バッチファイル
===== Shori1.bat =====
@echo off
echo %date%-%time%,処理1,開始 >> FILE_TIME.log
rem 処理1呼び出し
echo %date%-%time%,処理1,終了 >> FILE_TIME.log
===== Shori1.bat =====
===== Shori2.bat =====
@echo off
echo %date%-%time%,処理2,開始 >> FILE_TIME.log
rem 処理2呼び出し
echo %date%-%time%,処理2,終了 >> FILE_TIME.log
===== Shori2.bat =====
■サンプル・vbs
===== Shori1.vbs =====
Set ObjSFS = WScript.CreateObject("Scripting.FileSystemObject")
Set ObjLogFile = ObjSFS.OpenTextFile("FILE_TIME.log", 8, True)
ObjLogFile.WriteLine Now() & ",処理1,開始"
ObjLogFile.Close
rem 処理1呼び出し
Set ObjLogFile = ObjSFS.OpenTextFile("FILE_TIME.log", 8, True)
ObjLogFile.WriteLine Now() & ",処理1,終了"
ObjLogFile.Close
===== Shori1.vbs =====
===== Shori2.vbs =====
Set ObjSFS = WScript.CreateObject("Scripting.FileSystemObject")
Set ObjLogFile = ObjSFS.OpenTextFile("FILE_TIME.log", 8, True)
ObjLogFile.WriteLine Now() & ",処理2,開始"
ObjLogFile.Close
rem 処理2呼び出し
Set ObjLogFile = ObjSFS.OpenTextFile("FILE_TIME.log", 8, True)
ObjLogFile.WriteLine Now() & ",処理2,終了"
ObjLogFile.Close
===== Shori2.vbs =====
お礼
ありがとうございます。 結論から申しますと解決しまして、お見立ての通りCDの失敗でした。 cd >>%L_FILE%にて CD前後でのカレント確認、 bat実行ユーザー(管理者権限を持つ)での実行、 サブフォルダへの移動から繰り返す処理を別ラベルに。 その上で1処理ずつ丁寧に見直しまして、 目的の動作を得ることが出来ました。 どうもありがとうございました。