2014-06-05 2 views
8

Ich versuche einen Code zu erstellen, der erkennt, ob ein Laufwerksbuchstabe existiert.Überprüfen Sie, ob der Laufwerksbuchstabe im Stapel vorhanden ist, oder gehen Sie zu einem anderen Code.

Zum Beispiel, zu überprüfen, ob Laufwerk C: mein Code existiert, ist:

@echo off 
title If Exist Test 

:main 
CLS 
echo. 
echo press any key to see if drive C:\ exists 
echo. 
pause>nul 
IF EXIST C:\ GOTO yes 
ELSE GOTO no 

:yes 
cls 
echo yes 
pause>nul 
exit 

:no 
cls 
pause>nul 
exit 

Aber es funktioniert nicht, es geht entweder an: ja, wenn C: vorhanden ist oder Schuh einen leeren Bildschirm, wenn doesn‘ t. Was mache ich falsch, damit es nicht geht: nein?

+0

es ELSE entfernen, wenn Sie nicht funktioniert? –

Antwort

5
@echo off 
title If Exist Test 

:main 
CLS 
echo. 
echo press any key to see if drive C:\ exists 
echo. 
pause>nul 
::NB: you need the brackets around the statement so that the file 
::knows that the GOTO is the only statement to run if the statement 
::evaluates to true, and the ELSE is separate to that. 
IF EXIST C:\ (GOTO yes) ELSE (GOTO no) 

::I added this to help you see where the code just runs on to the 
::next line instead of obeying your goto statements 
echo no man's land 

:yes 
::cls 
echo yes 
pause>nul 
exit 

:no 
::cls 
echo no 
pause>nul 
exit 
5

Das Hauptproblem im Code ist die if ... else Syntax. Der vollständige Befehl muss als einzelner Codeblock gelesen/geparst werden. Es bedeutet nicht, dass es in einer einzigen Zeile geschrieben werden sollte, aber wenn es nicht der Fall, müssen die Leitungen Informationen an den Parser enthalten, so dass es der Befehl weiter auf der nächsten Zeile

if exist c:\ (echo exists) else (echo does not exist) 

---- 

if exist c:\ (
    echo exists 
) else echo does not exist 

---- 

if exist c:\ (echo exists 
) else echo does not exist 

---- 

if exist c:\ (
    echo exists 
) else (
    echo does not exist 
) 

einem der vorhergehenden Codes kennt wird wie vorgesehen funktionieren.

Wie auch immer, die Überprüfung für den Stammordner des Laufwerks erzeugt ein Popup für einige Arten von Laufwerken (in meinem Fall war es der Multi-Kartenleser). Um dies zu vermeiden, verwenden Sie stattdessen den Befehl vol und prüfen, ob Errorlevel

vol w: >nul 2>nul 
if errorlevel 1 (
    echo IT DOES NOT EXIST 
) else (
    echo IT EXISTS 
) 
-1

Verifiziert unter Win7 zu arbeiten. Versuchen Sie es mit einem (vorhandenen und nicht vorhandenen) Laufwerksbuchstaben Ihrer Wahl:

@IF EXIST O:\ (GOTO cont1) 
@ECHO not existing 
@GOTO end 

:cont1 
@ECHO existing! 

:end 
+0

Ich kann den Unterschied zu den zwei Jahre alten Antworten nicht sehen. Aber diese Antwort hat weniger Informationen. – jeb

+0

Es ist einfacher in Klammern und das Literal zu der Frage des OP (Überschrift). –

Verwandte Themen