从命令行安装虚拟克隆驱动器 - 等到虚拟驱动器可访问

从命令行安装虚拟克隆驱动器 - 等到虚拟驱动器可访问

我正在尝试将多个 .iso 映像的内容复制到一个目录中。我为此创建了一个批处理文件,它将 .iso 文件挂载到虚拟克隆驱动器中,然后开始复制。但是,Daemon.exe 在挂载完成之前返回。我只想在虚拟驱动器可访问后继续,因此我插入了一个循环来等待它,如下所示:

"C:\Program Files (x86)\Elaborate Bytes\VirtualCloneDrive\Daemon.exe" -mount "%imagefile%" "%drive%"
:loop
if not exist "%drive%\" (
    sleep 1
    goto :loop
    )
xcopy "%drive%\" "%tempfolder%" /e /h /i /r /y

它实际上不起作用,因为在 if not exist 行会出现一个对话框窗口:

cmd.exe-无磁盘

驱动器中没有磁盘。请将磁盘插入驱动器 V:。

取消 重试 继续

这样,批处理文件就不会自动运行,因为我必须按下其中一个按钮。

我怎样才能避免这个对话框?

[更新] 正如 Appleoddity 指出的那样,cmd 中没有睡眠命令,因此我更新了代码:

"C:\Program Files (x86)\Elaborate Bytes\VirtualCloneDrive\Daemon.exe" -mount "%imagefile%" "%drive%"
:loop
if not exist "%drive%\" (
    timeout 1 /nobreak > nul
    goto :loop
    )
xcopy "%drive%\" "%tempfolder%" /e /h /i /r /y

[更新] 下面是按回车键执行vcd.bat之前和之后的两张图片。 在此处输入图片描述 在此处输入图片描述

答案1

我无法在 Windows 10 中重现您的问题。

@echo off
set drive=F:
"C:\Program Files (x86)\Elaborate Bytes\VirtualCloneDrive\Daemon.exe" -mount "D:\Windows.iso" "%drive%"

:loop
if not exist "%drive%\" (
    echo Drive does not exist
    timeout 1 /nobreak >NUL
    goto :loop
    )
echo Drive Exists

输出:

Drive does not exist
Drive does not exist
Drive Exists

看来这个问题并不存在。您提到的消息听起来像是旧的 Windows 98 错误或其他什么。无论驱动器的状态如何,我都无法重现尝试使用此脚本时需要输入的任何提示。也许您没有%drive%像我一样定义,或者您的计算机上有其他东西导致了问题,例如某些防病毒软件或某些东西在您访问驱动器时试图扫描驱动器。

答案2

也许其他人也对这个问题感兴趣,所以我发布了我最终如何解决这个问题:

"C:\Program Files (x86)\Elaborate Bytes\VirtualCloneDrive\Daemon.exe" -mount "%imagefile%" "%drive%"
:loop
vol "%drive%" > nul 2> nul
if not "%errorlevel%" == "0" (
    timeout 1 /nobreak > nul
    goto :loop
    )
xcopy "%drive%\" "%tempfolder%" /e /h /i /r /y

注意:vol 通常打印有关驱动器的基本信息,由于不需要,因此输出和调试输出都重定向到 nul。重要的事实是,如果出现错误,它不会显示对话框,但会将 errorlevel 环境变量设置为 1(或不同于 0 的值),可以检查该值以避免使用 if exist 构造。

相关内容