2017-06-07 17 views
0

バッチファイルを使用するプロセスがあります。要するに、プレーンテキストデータが繰り返し取得され、.txtファイルの末尾に追加されます後の処理のために。データが処理されると、.txtが削除されます。.txtファイルの最後にテキストを追加するバッチファイルがファイルをロックしています

">>"演算子を使用してデータを.txtファイルに追加し、次に「DEL」cmdを使用して.txtファイルを削除することで、これは非常に簡単で基本的な方法で実行されます。

ただし、1人のユーザーがこれを実行する際に問題が発生しています。彼らは.txtファイルにデータを追加することができますが、ファイルがロックされているように見えるので、削除することはできません。バッチファイルが削除しようとすると、次のメッセージが表示されます。

"プロセスは別のプロセスで使用されているため、ファイルにアクセスできません。

作成中の.txtファイルはネットワークドライブ上にあり、他のユーザーがファイルを削除(または変更など)することもできません。

問題が発生したユーザーがPCを再起動すると、そのファイルを編集して削除することができます(ファイルを使用しているユーザーのPCにプロセスがあるように思われる)。

以下のバッチファイルは、私が作った非常に単純化されたデモですが、ユーザーの問題は経験しましたが、他の人の問題はありません。これはもちろん「実際の」プロセスではありませんが、余分なコードがなくても問題を示しており、メインプロセスが行っていることとはまったく独立しています。

:: we want to repeatedly append text to the end of a txt file 
echo test >> test.txt 
echo test >> test.txt 
echo test >> test.txt 

pause 

:: but then we cannot delete the file as it appears to be locked 
del test.txt 

pause 

問題を持つユーザーは、単に他の10誰もがWindows 7を使用しているWindowsを使用して、新しいPCを持っているかもしれないことは、問題の根本ですが、私はなぜか分からないのですか?私はコマンドプロンプトがWin10のためにいくつかの変更を加えたことを理解していますが、彼らはかなり美しく見えます。

何か指摘していただければ幸いです。私は何時間もインターネットを精練していて、この問題のようなものは見つけられません。たぶん私は根本的に間違ったことをしていますので、誰もこれに遭遇していないでしょうか?

ありがとうございます。

+1

私の最初の容疑者は、マシン上で実行されるマルウェア対策スキャナです。しかし、特にこのような単純なケースでは、共有違反を引き起こすのは珍しいことです。 – eryksun

+0

ところで、コンソール(conhost.exe)はWindows 10では大幅に更新されましたが、AFAIKではcmdシェルで大幅な変更はありませんでした。変更が美容的であること、つまりコンソールUIが変更されたということです。 – eryksun

答えて

0

Windows 7でも同じエラーメッセージが表示されますが、私の状況は少し異なります。私の場合は、バッチファイルをエディタで開き、変更して保存します。その後、バッチファイルを実行して、完了し、コンソールウィンドウを閉じます。私は変更を加えてファイルを再度保存しようとし、同じエラーメッセージが表示されます。私が30秒間待っていれば、バッチファイルを再び保存することができますが、再度実行すると同じエラーが発生します。

コンソールウィンドウをどのように閉じるかは関係ありません。私は、バッチファイルを完了させ、ウィンドウを閉じたり、タスクマネージャーを使ってバッチファイルを終了させたり、ウィンドウの右上にあるXをクリックして同じ結果を得ることができます。

また、私が使用するエディタも関係ありません。私は同じ結果を得る。

私の場合、ファイルはローカルドライブ(C :)にありますが、そのドライブにはネットワークのドライブマッピングがありますが、他のマシンは実行されていません。

.txtファイルがローカルに作成されている場合、同じ問題が発生しますか。 C :?

Win10マシンでドライブマッピングを使用している場合、ドライブマッピングではなくUNCを使用する場合、同じ問題が発生しますか?

私の場合、コンソールウィンドウが閉じているので、cmd.exeはファイルを開いたままにしていますが、メモリ管理やガベージコレクションと関係があるのだろうかと思います。

再起動するのではなくログオフして元に戻すと、ファイルを削除できますか?

もう1つ原因が考えられます。 Windowsは今、 "遅延書き込み"と呼ばれるものを持っています。私はバッチファイルでこの問題に遭遇しました。バッチファイルに遅れを入れてみてください。

PING 0.0.0.1 -n 3 -w 1000>NUL 2>&1 

何かに影響があるかどうかだけを確認してください。

関連する問題