определение наличия флешки из командного файла без сообщений об ошибках - PullRequest
5 голосов
/ 14 декабря 2010

У меня есть командные файлы с конструкцией:

if exist F:\ copy /y Application.exe F:\

в конце компиляции, чтобы скопировать исполняемый файл на USB-ключ, если он подключен. Он прекрасно работал с USB-ключами, но когда у меня было подключено USB-устройство чтения карт (это похоже на диски E :. .H :, и если SD-карта не подключена, при выполнении вышеупомянутой пакетной строки появляется сообщение «Windows - no disk».

Если карта подключена, я не получаю сообщение (и файл копируется), если устройство чтения карт не подключено, я не получаю сообщение и файл не копируется ( очевидно), но ни в одном из этих случаев пакетный файл не останавливается. Это только если устройство чтения карт подключено, но в накопителе нет карты.

Могу ли я спокойно проверить отсутствие «диска» в этих USB-накопителях из командного файла?

Ответы [ 4 ]

7 голосов
/ 03 октября 2011

Замените IF EXIST на DIR и используйте && или || в зависимости от того, что вы хотите.

Например,

  • Заменить IF EXIST...

    DIR F:\ && copy /y Application.exe F:\
    
  • Заменить IF NOT EXIST

    DIR F:\ || copy /y Application.exe F:\
    

Если вы хотите подавить STDOUT и STDERR изDIR для имитации 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:\
    
0 голосов
/ 07 июня 2014

if exist будет работать, если вы добавите NUL после F:\. Как это:

if exist F:\NUL copy /y Application.exe F:\
0 голосов
/ 19 апреля 2013

DIR нормально, только если диск не пустой.

Если на диске нет файлов, он не будет работать, даже если диск правильно подключен.

Использование CD вместо:

CD F:\ && copy /y Application.exe F:\
0 голосов
/ 14 декабря 2010

Я думаю, что раньше можно было запустить command.com с параметром /F, чтобы он всегда автоматически выдавал эти сообщения об ошибках, чтобы они не ломались. Хотя я не уверен в этом и совсем не уверен, работает ли он на современной Windows.

...