2010-12-14 9 views
5

mam pliki wsadowe z konstruktem:określania, czy dysk flash istnieje z pliku wsadowego bez komunikatów o błędach

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

na koniec kompilacji, aby skopiować plik wykonywalny do pamięci USB, jeśli jest podłączony w. Działa to dobrze z kluczami USB, ale kiedy miałem podłączony czytnik kart USB multi (to wygląda jak napędy E: .. H :, i jeśli nie ma karty SD podłączonej, kiedy wykonuję powyższą linię wsadową, Pojawia się komunikat "Windows - brak dysku"

Jeśli jest podłączona karta, nie otrzymuję wiadomości (i plik jest kopiowany), jeśli czytnik kart nie jest podłączony, nie otrzymuj wiadomości i plik nie jest kopiowany (oczywiście), ale w żadnym z tych przypadków plik wsadowy nie przestaje działać. Jest tylko wtedy, gdy czytnik kart jest podłączony, ale nie ma karty w napędzie.

Czy mogę cicho sprawdzić, czy nie ma "dysku" w tych napędach USB z pliku wsadowego?

Odpowiedz

7

Wymień IF EXIST na DIR i użyj && lub || w zależności od tego, co chcesz.

Na przykład

  • Aby wymienić IF EXIST...

    DIR F:\ && copy /y Application.exe F:\ 
    
  • Aby wymienić IF NOT EXIST

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

Jeżeli chcesz stłumić stdout i STDERR z DIR do naśladowania, jeśli spełnione dokładnie ...

  • Aby wymienić IF EXIST...

    DIR F:\ 1>NUL 2>&1 && copy /y Application.exe F:\ 
    
  • Aby wymienić IF NOT EXIST

    DIR F:\ 1>NUL 2>&1 || copy /y Application.exe F:\ 
    
+0

Dzięki @David. Pracował uczta.Korzystanie z konstrukcji 'if not exist F: \ echo hello' wyświetla okno dialogowe' --------------------------- Windows - bez dysku --------------------------- Wiadomość o przetwarzaniu wyjątków Komunikat c0000013 Parametry 75b6bf7c 4 75b6bf7c 75b6bf7c ------------ --------------- Anuluj Spróbuj ponownie Kontynuuj Kontynuuj --------------------------- 'jeśli F: \ odnosi się do czytnika kart USB bez podłączonej karty, natomiast użycie 'DIR F: \ 1> NUL 2> & 1 || echo hello' po prostu echo 'cześć' jak powinno. – rossmcm

0

Wydaje mi się, że kiedyś można było uruchomić program command.com za pomocą parametru /F, aby zawsze automatycznie powodował błędy komunikatów o błędach, tak aby nie naruszyć ich. Nie jestem tego pewien i wcale nie jestem pewien, czy to nadal działa w nowoczesnym systemie Windows.

0

DIR jest ok, tylko wtedy, gdy napęd nie jest pusty.

I istnieją żadne pliki na dysku, to nie będzie działać, nawet jeśli napęd jest prawidłowo podłączony

Zastosowanie CD zamiast:.

CD F:\ && copy /y Application.exe F:\ 
0

if exist zadziała jeśli dodać NUL po F:\. W ten sposób:

if exist F:\NUL copy /y Application.exe F:\ 
Powiązane problemy