从批处理文件中确定闪存驱动器是不是存在而没有错误消息
Posted
技术标签:
【中文标题】从批处理文件中确定闪存驱动器是不是存在而没有错误消息【英文标题】:determining if a flash drive exists from a batch file without error messages从批处理文件中确定闪存驱动器是否存在而没有错误消息 【发布时间】:2011-05-25 03:47:09 【问题描述】:我有构造的批处理文件:
if exist F:\ copy /y Application.exe F:\
在编译结束时,将可执行文件复制到 USB 密钥(如果已插入)。它可以与 USB 密钥一起正常工作,但当我插入 USB 多读卡器时(这看起来像驱动器 E:. .H:,如果没有插入 SD 卡,当我执行上述批处理行时,我会收到一条“Windows - 无磁盘”错误消息。
如果有卡插入,我没有收到消息,(并且文件被复制),如果没有插入读卡器,我没有收到消息,并且文件没有被复制(显然),但在这两种情况下,批处理文件都不会停止运行。仅当读卡器已插入但驱动器中没有卡时。p>
我可以通过批处理文件安静地检查这些 USB 驱动器中是否没有“磁盘”吗?
【问题讨论】:
【参考方案1】:将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:\
【讨论】:
谢谢@David。工作了一个款待。使用构造if not exist F:\ echo hello
会显示一个对话框 --------------------------- Windows - No Disk --------------------------- Exception Processing Message c0000013 Parameters 75b6bf7c 4 75b6bf7c 75b6bf7c --------------------------- Cancel Try Again Continue ---------------------------
,如果 F:\ 指的是没有插入卡的 USB 读卡器,而使用 DIR F:\ 1>NUL 2>&1 || echo hello
只会像它应该的那样回显 hello
。【参考方案2】:
我认为过去可以使用/F
参数运行command.com,以使其始终自动使这些错误消息失败,从而不会中断它们。但不确定它是否仍然适用于现代 Windows。
【讨论】:
【参考方案3】:DIR
只有在驱动器不为空时才可以。
我的驱动器上不存在文件,即使驱动器正确插入,它也无法工作。
改用CD
:
CD F:\ && copy /y Application.exe F:\
【讨论】:
【参考方案4】:如果您在F:\
之后添加NUL
,if exist
将起作用。像这样:
if exist F:\NUL copy /y Application.exe F:\
【讨论】:
以上是关于从批处理文件中确定闪存驱动器是不是存在而没有错误消息的主要内容,如果未能解决你的问题,请参考以下文章
我是否可以使用bat脚本从一个闪存驱动器将文件夹安装到具有特定名称并更改驱动器的另一个闪存驱动器
如何在 Linux 下的 C 中确定 USB 存储(USB 闪存驱动器)“设备路径”