montagem da unidade de clone virtual a partir da linha de comando - aguarde até que o drive virtual fique acessível

0

Estou tentando copiar o conteúdo de várias imagens .iso para um diretório. Eu criei um arquivo de lote para isso, que monta o arquivo .iso no Virtual Clone Drive e, em seguida, ele inicia a cópia. No entanto, o Daemon.exe retorna antes que a montagem seja concluída. Eu quero continuar apenas quando o drive virtual estiver acessível, então eu inseri um loop para esperar por ele, assim:

"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

Realmente não funciona porque na linha if not exist aparece uma janela de diálogo:

cmd.exe - No Disk

There is no disk in the drive. Please insert a disk into drive V:.

Cancel Try Again Continue

Desta forma, o arquivo de lote não funciona automaticamente porque eu tenho que pressionar um dos botões.

Como posso evitar esse diálogo?

[Atualizar] Como Appleoddity apontou, não há comando sleep em cmd, então atualizei o código:

"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

[Atualizar] Aqui estão duas fotos: antes e depois de pressionar o enter para executar vcd.bat.

    
por z32a7ul 09.02.2018 / 16:08

2 respostas

0

Talvez outra pessoa também esteja interessada no problema, por isso postei como resolvi o problema:

"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

Nota: vol normalmente imprime informações básicas sobre uma unidade, uma vez que ela não é necessária, tanto a saída quanto a saída de depuração são redirecionadas para nul. O fato importante é que ele não mostra um diálogo no caso de um erro, mas define a variável de ambiente errorlevel como 1 (ou algo diferente de 0), que pode ser verificado para evitar o uso da construção if.

    
por 13.02.2018 / 23:00
0

Não consigo reproduzir seu problema no 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

Saída:

Drive does not exist
Drive does not exist
Drive Exists

Parece que este problema não existe. A mensagem a que você está se referindo parece um erro antigo do Windows 98 ou algo assim. Não tive sucesso em reproduzir qualquer prompt que exigisse entrada ao tentar usar esse script, independentemente do estado da unidade. Talvez você não tenha definido %drive% como eu tenho ou você tem algo mais em seu computador causando o problema, como algum anti-vírus ou algo tentando verificar a unidade quando você acessá-lo.

    
por 09.02.2018 / 18:39