全部,
我有一個有趣的問題,我到處尋找答案但沒有找到答案。希望有人能夠解釋為什麼會發生這種情況。
我有一張 CD,其中包含多個 C++ 應用程式和一個批次文件,運行該文件以使用 XCOPY 將文件複製到正確的位置。是的,xcopy 操作成功發生,並且新應用程式被放置在正確的位置。
我遇到的問題是在批次檔完成檔案複製後,我關閉批次檔窗口,彈出 CD,然後從電腦上的新位置執行任何新複製的應用程式。我收到 Windows 錯誤「磁碟機中沒有磁碟。請將磁碟插入磁碟機 D:」。 (這是我的 CD 光碟機的名稱)
我的程式根本沒有任何對任何硬編碼/相對路徑的引用。事實上,一旦我承認這個錯誤四到五次並重新打開程序,我就再也不會看到這個錯誤了。要看到錯誤再次彈出,我必須再次從 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 複製的應用程式?有任何想法嗎?