Ihre Frage wurde das Hinzufügen einer ELSE
Klausel zu Ihrer IF
Aussage. Ich empfehle, ELSE
zwischen Ihren zwei nahen Klammern hinzuzufügen. Dieser Code macht genau das:
@echo off
for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,description^,drivetype 2^>NUL`) do (
if %%l equ 2 (echo USB detect in %%i) ELSE (echo No USB Detect)
)
Das ist meine Ausgabe ohne USB-Laufwerke angeschlossen:
C:\Users\tim\Documents\Scripting Tools>usbdetect.bat
No USB Detect
No USB Detect
No USB Detect
Das ist mein Ausgang mit einem thumbdrive gesteckt:
C:\Users\tim\Documents\Scripting Tools>usbdetect.bat
No USB Detect
No USB Detect
USB detect in D:
No USB Detect
Hier Mein Ergebnis des von Ihnen verwendeten WMIC-Befehls:
C:\Users\tim\Documents\Scripting Tools>wmic logicaldisk get caption,description,drivetype
Caption Description DriveType
C: Local Fixed Disk 3
D: Removable Disk 2
Sie könnten es Echos no USB Detect 3 mal bemerken. Das ist richtig, weil die FOR-Schleife, die Sie erstellt haben, jede Ausgabezeile durchläuft. WMIC gibt eine Zeile mit den Headern (Caption, Description und DriveType), eine Zeile für jedes Laufwerk (und C: ist DriveType 2) und dann eine leere Zeile aus.
Ihre letzte Zeile, In simple words: if USB detected, then "echo OK". But if it does not detect the USB, then "echo No" and exit.
Scheint implizieren, dass Sie nur eine einfache Installierte/nicht installiert, nicht ein Ja/Nein für jede Zeile der Ausgabe von Ihrer WMIC-Abfrage wollen. Wenn das der Fall ist, brauchen Sie (oder wollen) kein ELSE
. Versuchen Sie stattdessen:
@echo off
for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,description^,drivetype 2^>NUL`) do (
if %%l equ 2 (
echo USB detect in %%i
goto RestOfBatch
)
)
echo USB not detected
:RestOfBatch
ohne USB-Laufwerk eingesteckt:
C:\Users\tim\Documents\Scripting Tools>usbdetect.bat
USB not detected
Und mit einem USB-Laufwerk eingesteckt:
C:\Users\tim\Documents\Scripting Tools>usbdetect.bat
USB detect in D:
Wenn beides nicht das gewünschte Ergebnis, bitte Definieren Sie Ihr Problem klarer. http://ss64.com/nt/ enthält eine umfassende Liste von Batch-Befehlen und deren Syntax. Sie können auch /?
am Ende eines Befehls hinzufügen, um Beispiele zu erhalten.Beispiel: IF /?
'sonst So fügen (echo keine USB-Erkennung)' zwischen den beiden Klammern. CMD hat eine "IF ELSE" -Struktur: http://ss64.com/nt/if.html – Tim
aber in welchem Teil des Skripts? genauer gesagt –
Zwischen Ihren beiden nahen Klammern: ')' Die Syntax ist 'FOR .... (IF %% l equ 2 (Echo USB erkannt in %% i) ELSE (Echo Kein USB erkannt))' – Tim