2010-12-14 7 views
5

I Batch-Dateien mit dem Konstrukt habe:zu bestimmen, ob ein Flash-Laufwerk aus einer Batch-Datei vorhanden ist, ohne Fehlermeldungen

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

am Ende einer Kompilierung, die ausführbare Datei auf einen USB-Stick zu kopieren, wenn es eingesteckt ist in. Es hat gut mit USB-Tasten funktioniert, aber wenn ich einen USB-Multi-Kartenleser eingesteckt hatte (sieht aus wie Laufwerke E: .. H :, und wenn keine SD-Karte eingesteckt ist, wenn ich die obige Batch-Zeile ausführen, Ich bekomme eine "Windows - keine Festplatte" Snag Nachricht.

Wenn eine Karte eingesteckt ist, bekomme ich die Nachricht nicht, (und die Datei kopiert wird), wenn der Kartenleser nicht eingesteckt ist, ich bekomme die Nachricht nicht und Die Datei wird nicht kopiert (offensichtlich), aber in keinem dieser Fälle wird die Batch-Datei nicht mehr ausgeführt. Nur wenn der Kartenleser eingesteckt ist, aber keine Karte im Laufwerk ist.

Kann ich auf diesen USB-Laufwerken ruhig nach einer "Diskette" aus einer Stapeldatei suchen?

Antwort

7

ersetzen IF EXIST mit DIR und verwenden Sie die && oder || je nachdem, was Sie wollen passieren.

Zum Beispiel

  • Um IF EXIST...

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

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

zu ersetzen zu ersetzen, wenn Sie möchten, die STDOUT- zu unterdrücken und STDERR des DIR den IF zu imitieren EXIST genau ...

  • Um 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

Dank @David. Arbeitete eine Belohnung.Mit dem Konstrukt 'falls nicht vorhanden F: \ echo hallo' erscheint ein Dialog' --------------------------- Windows - No Disk --------------------------- Ausnahme Verarbeitungsnachricht c0000013 Parameter 75b6bf7c 4 75b6bf7c 75b6bf7c ------------ --------------- Abbrechen Erneut versuchen Weiter --------------------------- 'if F: \ bezieht sich auf einen USB-Kartenleser ohne eingesteckte Karte, während 'DIR F: \ 1> NUL 2> & 1 || verwendet wird echo hallo' nur echos 'hallo' wie es sollte. – rossmcm

0

Ich denke, dass es früher gab, dass Sie command.com mit einem /F Parameter ausführen konnten, damit es immer automatisch diese Fehlermeldungen fehlschlägt, damit es nicht auf ihnen brach. Ich bin mir jedoch nicht sicher, ob das auf modernen Windows noch funktioniert.

0

DIR ok ist nur zu ersetzen zu ersetzen, wenn die Laufwerk ist nicht leer.

ich keine Dateien vorhanden auf dem Laufwerk es nicht einmal funktioniert, wenn Laufwerk richtig angeschlossen ist

Verwenden CD statt.

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

if exist wird funktionieren, wenn Sie NUL nach F:\ hinzufügen. Gefällt mir:

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