すべて、
私は興味深い問題を抱えており、どこでも答えを探して、不足している。うまくいけば、そこにいる誰かがこれがなぜ起こっているのかについていくらかの光を当てることができます。
いくつかのC ++アプリケーションと、XCOPYを使用してファイルを正しい場所にコピーするために実行されるバッチファイルを含むCDがあります。はい、xcopy操作は正常に行われ、新しいアプリケーションは正しい場所に配置されます。
私が抱えている問題は、バッチファイルがファイルのコピーを終了した直後であり、バッチファイルウィンドウを閉じ、CDを取り出し、コンピューター上の新しい場所から新しくコピーしたアプリケーションを実行します。「ドライブにディスクがありません。ドライブDにディスクを挿入してください:」というWindowsエラーが表示されます。(それは私のCDドライブの名前です)
私のプログラムには、ハードコーディングされた/相対パスへの参照がまったくありません。実際、一度このエラーを4〜5回確認し、プログラムを再度開くと、エラーが再び表示されることはありません。エラーが再び表示されるようにするには、アプリケーションを実行する前にCDからバッチファイルを再度実行し、CDを取り出す必要があります。
さらに明確にするために、ディスクからアプリケーションの手動コピー/貼り付け(Ctrl + c、Ctrl + v)を行うと問題なく動作します。CDを手動でコピー/貼り付けして取り出しても、プログラムは正常に機能します。このエラーは、プログラムを実行する前にバッチファイルでコピーし、CDを取り出してから初めてプログラムを実行したときにのみ発生します。また、バッチファイルの実行後にコンピューターを再起動すると、この問題がまったく発生しなくなります。
あなたが言っていることを知っています、ファイルをコピーしてからコンピューターを再起動すると問題が解決する場合、なぜ彼はここでこの質問をしているのですか?さて、このファイルを一度に30台以上のネットワークに接続されていないコンピューターにコピーする必要があり、各コンピューターを再起動するには長い時間がかかります。
XCOPYを使用してアプリケーションをコピーしたときに、プログラムがコピーされた後もプログラムがまだCD上にあると考える場所に、Windowsの奇妙なタグ付けがありますか?誰かが私を正しい方向に導く提案、コメント、またはリンクを持っていますか?どんな助けも驚異的です。
どうもありがとう!
編集:これはWindows XPオペレーティングシステム上にあることを言及するのを忘れました。
EDIT2:これは私のバッチファイルのコードです。
@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からコピーされたアプリケーションにタグを付ける奇妙な方法があるかどうか疑問に思っていますか?何か案は?
/J
スイッチを使用してみてくださいxcopy
。これにより、バッファなしのファイルI / Oが使用されます。入力help xcopy
詳細は、コマンドプロンプトで。