[前の記事]« コマンド・プロンプトからWEBの掲示板に投稿できますか?
[次の記事]指定したファイルが存在するサブディレクトリをまるごと移動したい »

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

▲カテゴリー「バッチファイルの起動、引数の取得」索引へ

バッチ内からのバッチ呼び出し中に「プロセスはファイルにアクセスできません」と出る

1617.
バッチから他のバッチを行う場合について
2007年01月20日(土) 13時52分
もん
いつも参考にさせて頂いております。

早速、どなたかご教授をお願い致します。

バッチAからバッチBを実行し、更にバッチB内でプログラムを起動しています。

バッチAではバッチBの実行結果を(呼出に失敗した場合を目的に)ログ出力していますが、

バッチB実行後、ログへのアクセスができなくなります。

--バッチA--

CALL B.bat >> Result.log 2>&1 

ECHO:実行結果 %Errorlevel% >> Result.log

--バッチB--

START NOTEPAD

--実行結果--
プロセスはファイルにアクセスできません。別のプロセスが使用中です。


CALL B.bat >> Result.log 2>&1
の実行で Result.log が他プロセス(B.bat?、NOTEPAD?)に占有され、
ECHO:B.bat 実行結果 %Errorlevel% >> Result.log
において、上記エラーが発生する様ですが、何か回避策等、無いでしょうか?

尚、バッチBは第三者から提供されるものである為、バッチAだけで対策する事を前提としています。

お手数ですが、回避策についてのご教授、ご助言をお願い致します。
1619.
Re:バッチから他のバッチを行う場合について
2007年01月21日(日) 12時41分
otn
>--バッチA--
>
>CALL B.bat >> Result.log 2>&1 
>
>ECHO:実行結果 %Errorlevel% >> Result.log
>
>--バッチB--
>
>START NOTEPAD
>
>--実行結果--
>プロセスはファイルにアクセスできません。別のプロセスが使用中です。

ファイルハンドルがどのファイルorデバイスを指しているかの情報は子プロセスに引き継がれます(だからこそリダイレクトが意味を持つわけですが)。
リダイレクトして call B.bat してるので、その情報は子供のCMD.EXEにも引き継がれ、さらにNOTEPAD.EXEにも引き継がれます。
したがって、子供CMD.EXEが終わってもNOTEPAD.EXEが終わらない限りファイルは握られたままです。


要件を満たすかどうかわかりませんが、
--バッチA--
(
CALL B.bat 
ECHO:実行結果 %Errorlevel%
) >> Result.log 2>&1
とか。

1621.
Re:バッチから他のバッチを行う場合について
2007年01月21日(日) 14時33分
もん
ご回答ありがとうございます。

やっぱりファイルをつかまれてしまいますか、残念。

ご提示頂いた方法でも以降、ファイルにアクセスできなくなる為、CALLコマンドのエコーバックをファイル出力しない様にします。(ERRORLEVELだけ出力)

ご教授、ありがとうございました。

 
 


カテゴリー「バッチファイルの起動、引数の取得」索引へ

 




カテゴリー一覧

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


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

資料書籍

About

2007年01月20日 14:01に投稿されたエントリーのページです。

ひとつ前の投稿は「コマンド・プロンプトからWEBの掲示板に投稿できますか?」です。

次の投稿は「指定したファイルが存在するサブディレクトリをまるごと移動したい」です。

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

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