2015-01-27 3 views
0

Я использую for %% a в инструкции цикла;FOR %% a in (A B C ...) statement pull up error

for %%a in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
IF EXIST %%a:\file.id SET USBDRV=%%a:&& GOTO xcopypart 

Которая затем выполняет выполнение xcopy. Проблема заключается в том, что, если устройство/компьютер скажет, слот для SD-карты и т. Д., И устройство отображается серым цветом под компьютером, оно попросит пользователя ввести в дисковод .

Это проблема, потому что конфигурации компьютеров различны - в некоторых из них есть слоты для SD-карт, а некоторые нет, и поскольку это часть приложения, я не могу постоянно сталкиваться с этим сообщением об ошибке, единственной альтернативой является то, что они отключают существующее оборудование чтобы он работал.

Есть ли переключатель или переопределение, которое я могу использовать, чтобы пропустить диски, которые являются «пустыми»?

веселит за ваше время

-Julian

+0

Возможно, вы можете добавить еще один оператор if, чтобы проверить «dir/b» и перейти к следующему шагу, только если «dir/b» не пуст/null – gbabu

ответ

1
set "USBDRV=" 
for %%a in (
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
) do vol %%a: >nul 2>&1 && ( 
    if exist "%%a:\file.id" set "USBDRV=%%a:" & goto xcopypart 
) 

Это первый использует команду vol, чтобы проверить, если диск готов. Если нет уровня ошибок, диск проверяется на наличие файла.

+0

Извините @MC, должно было уточнить, что оно завернуто в циклическое утверждение goto; ': найти набор "USBDRV =" для %% а в ( ABCDEFGHIJKLMNOPQRSTU VWXYZ ) сделать ИЗД %% а:> NUL && ( , если существует "%% а: \ file.id" установить«USBDRV = %% а:»& Гото xcopypart ) Гото find' код, который вы предложили просто подтягивает зацикливание„недопустимый дескриптор“ –

+0

@JulianWhite, извините, я забыл, чтобы перенаправить поток ошибок, чтобы скрыть вывод на STDERR. Код обновлен. –

+0

Замечательно, это сработало отлично, спасибо вам большое! Добавление ': FIND' в начале и' GOTO FIND' в конце также отлично отменило заявление. –

Смежные вопросы