新しく変更されたファイルの古いバージョンを読み取るバッチファイル内のプログラム(XP)


0

私はXP上で実行されている通常のバッチファイルを持っています。まず、プログラムAはデータ(文字列)をファイルの終わりまで追加します。 X.dll (サーバー上)。プログラムBはファイルを開き、データを探します。しかしながら、時々(通常)、プログラムBは明らかにファイルのバージョンを読んでいます プログラムAが戻った後に順次実行されるという事実にもかかわらず、ストリングは追加されています。

電話したら dir X.dll AとBの間、Bは変更されたファイルを正しく読みます。

同じネットワーク上のWindows 7マシンで実行されている同じバッチファイルは問題なく動作します。

誰が地球上で何が起こっているのか、何か考えがありますか?


Server Faultにも質問が投稿されました - serverfault.com/questions/171332/…
ChrisF

ファイルシステムがファイルのディスクへの書き込みを遅らせている可能性はありますか(パフォーマンス)。
MrWhite

それが私が知りたいことです。そしてもしそうなら、それについてどうするか。
Joel in Gö

回答:


1

Aが終了する前にBが実行されているように見えます。これを回避する1つの方法はSTARTを使用することです。このコマンドでAを実行します。 開始/待機 。 Aが実行を終了するまで、バッチファイルは続行されません。


考えは大丈夫ですが、この場合は違います。 "start"を指定せずにプログラムを実行していますが、これは "start / wait"と同じ効果があります。プログラムAも終了時に "finished"を出力し、Bの開始前に "B starting"を出力するので、AがBの開始前に実際に終了したことがわかります。
Joel in Gö

@Joel:データファイルが保存されているドライブで書き込みキャッシュが有効になっている場合、それが要因となる可能性があります。書き込みキャッシュを無効にするとパフォーマンスが低下しますが、除外することをお勧めします。エクスプローラ、プロパティ、ハードウェアタブでドライブを右クリックし、ドライブを選択してプロパティをクリックします。ドライブが正しいことを確認するには、[ボリューム]タブに移動して[作成]をクリックします。 [ポリシー]タブに移動して、書き込みキャッシュを無効にします。再起動する必要があります。テストを再実行してください。それでもうまくいく場合は、バッチファイル内から書き込みキャッシュをその場でフラッシュする方法を探しています。
boot13

これはネットワークドライブであり、ほぼ間違いなく書き込みキャッシュを持っています。 (プロパティウィンドウにはハードウェアは表示されません)。私は同意します、それがおそらく問題です。上記のように、プログラム呼び出しの間に "dir filename"を実行することはうまくいきます。
Joel in Gö
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.