确定批处理文件中是否存在闪存驱动器而没有错误消息

时间:2010-12-14 08:58:46

标签: batch-file file-exists usb-flash-drive

我有带有构造的批处理文件:

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

在编译结束时,将可执行文件复制到USB密钥(如果已插入)。它可以正常使用USB密钥但是当我插入USB多卡读卡器时(这看起来像驱动器E:。 .H :,如果没有插入SD卡,当我执行上面的批处理行时,我得到一个“Windows - 无磁盘”阻塞消息。

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

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

4 个答案:

答案 0 :(得分:7)

IF EXIST替换为DIR并使用&&||,具体取决于您希望发生的事情。

例如,

  • 替换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:\
    

答案 1 :(得分:0)

我认为以前可以运行带有/F参数的command.com,以使它始终自动失败这些错误消息,以便它不会破坏它们。虽然不确定它是否仍然适用于现代Windows。

答案 2 :(得分:0)

DIR仅在驱动器不为空时才可以。

我的驱动器上没有文件,即使驱动器已正确插入,它也无法工作。

改为使用CD

CD F:\ && copy /y Application.exe F:\

答案 3 :(得分:0)

如果您在if exist之后添加NUL

F:\将有效。像这样:

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