Как избежать ошибки «Нет диска на диске» во время пакетной обработки - PullRequest
0 голосов
/ 05 марта 2012

Я запускаю пакетный файл, который ищет каждую букву жесткого диска на наличие определенного файла в корне этого диска.

Пример:

@echo off

for %%a in (C D E F G H I J K) do if exist %%a:\myfile.txt set DEST=%%a:

XCOPY "my app.exe" "%DEST%\" /i /y

Однако, еслинет диска в одном из проверяемых накопителей (особенно кард-ридеров), я получаю сообщение об ошибке THERE IS NO DISK IN DRIVE и т. д., и пакет останавливается, требуется ввод данных пользователем, и нажимает кнопку «продолжить» 2 или 3 раза.Файл успешно скопирован.

Я хочу избежать этого, но все же ищу все возможные буквы дисков ...

В идеале, я хочу подавить любые остановки, а также сообщения об ошибках ...

PS: myfile.txt всегда только на фиксированном диске

Ответы [ 3 ]

0 голосов
/ 15 марта 2013

Вы можете сделать все это одним способом, используя ответ PA. Частично ...

для% a in (CDEFGHIJK) сделать, если существует% a: \, если существует% a: \ myfile.txt xcopy "my app.exe"% a: \ / i / y

0 голосов
/ 15 марта 2013

Прошел год с тех пор, как эта проблема, но вот решение:

@echo off

FOR %%a IN (C D E F G H I J K) DO (
    IF EXIST "%%a:\myfile.txt" (
        SET DEST=%%a:
        goto :found
    )
)

:found
XCOPY ..\"app1.exe" "%DEST%\Softwares\" /i /y
XCOPY ..\"app2.exe" "%DEST%\Softwares\" /i /y
0 голосов
/ 05 марта 2012

для проверки, вставлен ли диск, вы можете попробовать

, чтобы проверить, существует ли каталог, в вашем случае это корень съемного диска, попробуйте это.

    IF EXIST %%a:\NUL ECHO %%a:\ exists!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...