全部,
我遇到了一个有趣的问题,我到处寻找答案,但都无功而返。希望有人能解释一下为什么会发生这种情况。
我有一张 CD,其中包含几个 C++ 应用程序和一个批处理文件,运行该批处理文件可使用 XCOPY 将文件复制到正确的位置。是的,xcopy 操作成功完成,新应用程序被放置在正确的位置。
我遇到的问题是,批处理文件完成文件复制后,我关闭批处理文件窗口,弹出 CD,并从计算机上的新位置运行任何新复制的应用程序。我收到 Windows 错误“驱动器中没有磁盘。请将磁盘插入驱动器 D:”。(这是我的 CD 驱动器的名称)
我的程序根本没有引用任何硬编码/相对路径。事实上,一旦我确认此错误 4 或 5 次并重新打开程序,我就再也看不到该错误了。要再次看到错误弹出,我必须再次从 CD 运行批处理文件,然后在运行应用程序之前取出 CD。
需要进一步说明的是,手动从磁盘复制/粘贴(Ctrl+c、Ctrl+v)应用程序可以正常工作。如果我手动复制/粘贴并弹出 CD,程序可以正常工作。只有在我使用批处理文件复制程序并在运行程序之前取出 CD 后,程序第一次运行时才会出现此错误。此外,运行批处理文件后重新启动计算机也可以完全避免发生此问题。
我知道你在说什么,如果复制文件后重新启动计算机可以解决问题,那他为什么在这里问这个问题?好吧,我必须同时在 30 多台未联网的计算机上复制此文件,并且重新启动每台计算机都需要很长时间。
使用 XCOPY 复制应用程序时,Windows 是否会对应用程序进行一些奇怪的标记,而程序在复制后仍认为它存在于 CD 上?有没有人有任何建议、评论或链接可以给我指明正确的方向?任何帮助都将不胜感激。
多谢!
编辑:我忘了提到这是在 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 复制的应用程序?有什么想法吗?