![「ドライブにディスクがありません。」バッチ ファイル xcopy を使用して CD からコピーしたばかりのアプリケーションからのエラー メッセージですが、バッチ ファイル xcopy はまったく必要ありません。](https://rvso.com/image/1365847/%E3%80%8C%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E3%81%AB%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E3%80%8D%E3%83%90%E3%83%83%E3%83%81%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%20xcopy%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%20CD%20%E3%81%8B%E3%82%89%E3%82%B3%E3%83%94%E3%83%BC%E3%81%97%E3%81%9F%E3%81%B0%E3%81%8B%E3%82%8A%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%8B%E3%82%89%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%20%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81%E3%83%90%E3%83%83%E3%83%81%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%20xcopy%20%E3%81%AF%E3%81%BE%E3%81%A3%E3%81%9F%E3%81%8F%E5%BF%85%E8%A6%81%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82.png)
全て、
興味深い問題があり、どこを探しても答えが見つかりません。なぜこのようなことが起きているのか、どなたかが解明してくれることを願っています。
いくつかの C++ アプリケーションと、XCOPY を使用してファイルを正しい場所にコピーするために実行されるバッチ ファイルを含む CD があります。はい、xcopy 操作は正常に実行され、新しいアプリケーションは正しい場所に配置されます。
私が抱えている問題は、バッチ ファイルによるファイルのコピーが完了した直後に、バッチ ファイル ウィンドウを閉じ、CD を取り出し、コンピューターの新しい場所から新しくコピーしたアプリケーションを実行すると、「ドライブにディスクがありません。ドライブ D: にディスクを挿入してください」という Windows エラーが表示されることです (これは私の CD ドライブの名前です)。
私のプログラムには、ハードコードされたパスや相対パスへの参照はまったくありません。実際、このエラーを 4 回または 5 回確認してプログラムを再度開くと、エラーが再び表示されることはありません。エラーが再び表示されるようにするには、CD からバッチ ファイルを再度実行し、アプリケーションを実行する前に CD を取り出す必要があります。
さらに明確にするために、ディスクからアプリケーションを手動でコピー/貼り付け (Ctrl+c、Ctrl+v) すると、問題なく動作します。手動でコピー/貼り付けして CD を取り出すと、プログラムは問題なく動作します。このエラーは、バッチ ファイルでコピーし、プログラムを実行する前に CD を取り出した後、プログラムを初めて実行するときにのみ発生します。また、バッチ ファイルを実行した後にコンピューターを再起動すると、この問題は完全に発生しなくなります。
あなたの言っていることはわかります。ファイルをコピーした後にコンピューターを再起動すると問題が解決するのであれば、なぜここでこの質問をしているのでしょうか。このファイルを一度に 30 台以上のネットワークに接続されていないコンピューターにコピーする必要があり、各コンピューターを再起動するには非常に時間がかかります。
XCOPY でアプリケーションをコピーすると、コピー後もプログラムが CD 上に残っていると認識され、Windows によってアプリケーションに奇妙なタグ付けが行われるのでしょうか? 正しい方向を指し示す提案、コメント、またはリンクをお持ちの方はいらっしゃいませんか? どんな助けでもいただければ幸いです。
どうもありがとう!
編集: これは Windows XP オペレーティング システム上にあることを忘れていました。
編集2: これが私のバッチファイルのコードです。
@ECHO OFF
SET INSTALLSERVER=%~dp0
SET AppProgramFiles=%ProgramFiles%\ApplicationName\
XCOPY "%INSTALLSERVER%Scenario\*.*" "%AppProgramFiles%Scenario\" /C /Y /q
XCOPY "%INSTALLSERVER%Plan\*.*" "%AppProgramFiles%Plan\" /C /Y /q
XCOPY "%INSTALLSERVER%Data" "%AppProgramFiles%Data\" /C /Y /q /e
XCOPY "%INSTALLSERVER%Misc\*.*" "%AppProgramFiles%Misc\" /C /Y /q
上で述べたように、アプリケーションを自分でコピー/貼り付けしても、プログラムは問題なく動作します。この方法で実行した場合、エラーは発生しません。「ドライブにディスクがありません」というエラーは、バッチ ファイルを使用してアプリケーションをコピーした場合にのみ表示されます。実際、vbscript ファイルを使用してアプリケーションをコピーした場合にも同じ問題が発生しました。Windows XP には、バッチ/vbscript などのプロセスを使用して CD からコピーされたアプリケーションにタグを付ける奇妙な方法があるのではないかと思います。何かアイデアはありますか?