2010-12-14 5 views
5

ho file batch con il costrutto:determinare se un flash drive esiste da un file batch senza i messaggi di errore

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

al termine di una compilazione, per copiare il file eseguibile a una chiave USB se è collegata in. Ha funzionato bene con le chiavi USB, ma quando ho inserito un lettore USB multi card (sembra che sia E: .. H: e se non è inserita alcuna scheda SD, quando eseguo la linea batch sopra, Viene visualizzato un messaggio di errore "Windows: nessun disco"

Se è inserita una scheda, non viene visualizzato il messaggio, (e il file viene copiato), se il lettore di schede non è collegato, I non capisco il messaggio e il file non viene copiato (ovviamente), ma in nessuno di questi casi il file batch viene arrestato. È solo se il lettore di schede è collegato ma non c'è alcuna scheda nell'unità.

Posso controllare tranquillamente per nessun "disco" in queste unità USB da un file batch?

risposta

7

Sostituire IF EXIST con DIR e utilizzare il && o || seconda di ciò che si desidera che accada.

Per esempio,

  • Per sostituire IF EXIST...

    DIR F:\ && copy /y Application.exe F:\ 
    
  • Per sostituire IF NOT EXIST

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

Se si desidera eliminare lo STDOUT e STDERR della DIR per imitare la SE ESISTE esattamente ...

  • Per sostituire IF EXIST...

    DIR F:\ 1>NUL 2>&1 && copy /y Application.exe F:\ 
    
  • Per sostituire IF NOT EXIST

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

Grazie a @David. Ha funzionato a meraviglia.Usando il costrutto 'se non esiste F: \ echo hello' visualizza una finestra di dialogo' --------------------------- Windows - Nessun disco --------------------------- Messaggio di elaborazione delle eccezioni c0000013 Parametri 75b6bf7c 4 75b6bf7c 75b6bf7c ------------ --------------- Annulla Riprova Continua --------------------------- 'se F: \ si riferisce ad un lettore di schede USB senza scheda inserita, mentre usando 'DIR F: \ 1> NUL 2> & 1 || echo ciao' solo echos 'ciao' come dovrebbe. – rossmcm

0

Penso che in passato si potesse eseguire command.com con un parametro /F per fare in modo che fallissero automaticamente quei messaggi di errore in modo che non si rompessero su di essi. Non ne sono sicuro, e non sono sicuro che funzioni ancora su Windows moderno.

0

DIR è ok solo quando il l'unità non è vuota.

I nessun file esiste sul disco non funzionerà nemmeno se l'unità sia correttamente inserito nel

Uso CD invece:.

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

if exist funzionerà se si aggiunge NUL dopo F:\. In questo modo:

if exist F:\NUL copy /y Application.exe F:\ 
Problemi correlati