[前の記事]« vbs結果をバッチに引渡す方法
[次の記事]ウィンドウの表示位置を固定したい »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「WSH(WINDOWS SCROPT HOST)/VBS」索引へ

バッチ⇒VBS⇒バッチ起動時の同一ログファイルへの書き込み

179.
バッチ⇒VBS⇒バッチ起動時の同一ログファイルへの書き込み
2004年12月27日(月) 18時08分
たなか
●DOS/Windowsのバージョン
OS:Win2K(SP4), Win2k Server, Win 2003 Server

バッチから VBS を起動し、VBS からバッチを起動する一連のプログラムがあります。
TEST01.bat でログファイル(ファイル名は固定ではなく動的に生成)を作成します。
その同じログファイルへ、以降のプログラムでもログを書き込みたいと考えています。
標準出力、標準エラー出力のログを書き込みます。

このように記述してみました。
----
・TEST01.bat //NOLOGO
 ECHO TEST01.bat処理 > LOGFILE_%FILENAME%.LOG 2>&1
 CSCRIPT TEST.vbs >> LOGFILE_XXXXXXXX.LOG 2>&1
 SET FILENAME=XXXXXXXX

・TEST.vbs
 WScript.Echo "TEST.vbs処理"
 Set WSHShell = WScript.CreateObject("WScript.Shell") 
 WSHShell.Run "TEST02.bat"

・TEST02.bat
 ECHO TEST02.bat処理 >> LOGFILE_%FILENAME%.LOG 2>&1
----

しかし、TEST02.bat実行時に、
『プロセスはファイルにアクセスできません。別のプロセスが使用中です。』
と言うエラーが生じて、ログファイルへの書き込みが出来ません。
これはどのように回避すれば良いのでしょうか?
また、出来れば、TEST02.bat でも、TEST.vbs 同様に、
ログファイルのファイル名を指定しないような形に出来ればと考えています。
その様な方法はあるのでしょうか?
ヒント等でも頂ければ幸いです。
よろしくお願いします  
180.
Re:バッチ⇒VBS⇒バッチ起動時の同一ログファイルへの書き込み
2004年12月27日(月) 19時12分
otn
質問の確認です。

>●DOS/Windowsのバージョン
>OS:Win2K(SP4), Win2k Server, Win 2003 Server

>バッチから VBS を起動し、VBS からバッチを起動する一連のプログラムがあります。
>TEST01.bat でログファイル(ファイル名は固定ではなく動的に生成)を作成します。
>その同じログファイルへ、以降のプログラムでもログを書き込みたいと考えています。
>標準出力、標準エラー出力のログを書き込みます。

ということであれば、TEST01.BAT は、

>・TEST01.bat //NOLOGO
> ECHO TEST01.bat処理 > LOGFILE_%FILENAME%.LOG 2>&1
> CSCRIPT TEST.vbs >> LOGFILE_XXXXXXXX.LOG 2>&1
> SET FILENAME=XXXXXXXX

でなく、

・TEST01.bat
 SET FILENAME=なんからのロジックで値をセット
 ECHO TEST01.bat処理 > LOGFILE_%FILENAME%.LOG 2>&1
 CSCRIPT TEST.vbs >> LOGFILE_%FILENAME%.LOG 2>&1

だと思うのですが?
183.
Re:バッチ⇒VBS⇒バッチ起動時の同一ログファイルへの書き込み
2004年12月27日(月) 20時08分
otn
>しかし、TEST02.bat実行時に、
>『プロセスはファイルにアクセスできません。別のプロセスが使用中です。』
>と言うエラーが生じて、ログファイルへの書き込みが出来ません。
>これはどのように回避すれば良いのでしょうか?

test01.bat の中で >> のりダイレクトによって書き込みオープン中ですから、他のプロセスからは書き込み出来ないです。

>また、出来れば、TEST02.bat でも、TEST.vbs 同様に、
>ログファイルのファイル名を指定しないような形に出来ればと考えています。
>その様な方法はあるのでしょうか?
>ヒント等でも頂ければ幸いです。
>よろしくお願いします  

test.vbsを、下記のようにしてtest02.batの出力もvbsから書き出してやるしかないでしょう。

WScript.Echo "TEST.vbs処理"
Set WshShell = CreateObject("WScript.Shell")
Set oExec    = WshShell.Exec("test02.bat 2>&1")
WScript.Stdout.Write oExec.StdOut.ReadALL
Do While oExec.Status <> 1 'Execの終了処理を待つ
     WScript.Sleep 100
Loop

もしかしたらtest02.batの内容によってはうまく行かないかもしれません。
186.
Re2:バッチ⇒VBS⇒バッチ起動時の同一ログファイルへの書き込み
2004年12月28日(火) 16時05分
たなか
回答ありがとうございます。
バッチ⇒VBS⇒バッチ起動時の同一ログファイルへの書き込みが出来ました。
提示して頂いたコードで解決いたしました。ありがとうございました。
また、エラーの内容も解説して頂いたお陰で理解できました。
(TEST01.batと TEST02.bat が別プロセスになっていて、ファイル書き込みが競合していた。)
(SET FILENAME=XXXXXXXXの書き場所は記載ミスでした。紛らわしくしてしまい申し訳ありません。)
 
 


カテゴリー「WSH(WINDOWS SCROPT HOST)/VBS」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2004年12月27日 09:34に投稿されたエントリーのページです。

ひとつ前の投稿は「vbs結果をバッチに引渡す方法」です。

次の投稿は「ウィンドウの表示位置を固定したい」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート