5

我有构造的批处理文件:

if exist F:\ copy /y Application.exe F:\

在编译结束时,将可执行文件复制到 USB 密钥(如果已插入)。它与 USB 密钥一起工作得很好,但是当我插入 USB 多读卡器时(这看起来像驱动器 E:..H: ,并且如果没有插入 SD 卡,当我执行上述批处理行时,我会收到“Windows - 无磁盘”消息。

如果插入了卡,我没有收到消息,(并且文件被复制),如果没有插入读卡器,我没有收到消息并且没有复制文件(显然),但在这两种情况下,批处理文件都不会停止运行。仅当读卡器已插入但驱动器中没有卡时。

我可以从批处理文件中安静地检查这些 USB 驱动器中是否没有“磁盘”吗?

4

4 回答 4

7

替换IF EXISTDIR并使用&&or||取决于您想要发生的事情。

例如,

  • 取代IF EXIST...

    DIR F:\ && copy /y Application.exe F:\
    
  • 取代IF NOT EXIST

    DIR F:\ || copy /y Application.exe F:\
    

如果您想抑制 DIR 的 STDOUT 和 STDERR 以完全模仿 IF EXIST...

  • 取代IF EXIST...

    DIR F:\ 1>NUL 2>&1 && copy /y Application.exe F:\
    
  • 取代IF NOT EXIST

    DIR F:\ 1>NUL 2>&1 || copy /y Application.exe F:\
    
于 2011-10-03T15:51:48.937 回答
0

我认为过去你可以使用/F参数运行 command.com 以使其始终自动使这些错误消息失败,这样它就不会中断它们。虽然不确定,也不确定这是否仍然适用于现代 Windows。

于 2010-12-14T09:11:06.593 回答
0

DIR只有当驱动器不为空时才可以。

我的驱动器上不存在文件,即使驱动器正确插入,它也无法工作。

改用CD

CD F:\ && copy /y Application.exe F:\
于 2013-04-19T12:42:33.073 回答
0

if exist如果您NULF:\. 像这样:

if exist F:\NUL copy /y Application.exe F:\
于 2014-06-07T18:13:54.643 回答