Problem mit Batchdatei

Dieses Thema im Forum "Windows NT / 95 / 98 / 2000 / ME" wurde erstellt von Nitro, 29. April 2002.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Nitro

    Nitro ROM

    Registriert seit:
    8. Januar 2002
    Beiträge:
    6
    Hallo,

    ich versuche gerade einen Batch zu schreiben um Laufwerke zu mappen. Das ganze sieht folgender maßen aus:

    ------------------------------------------------------------------------------------------

    @ECHO OFF
    ECHO Mit diesem Batch können Netzlaufwerke verbunden werden!
    ECHO Bitte die gewünschte Auswahl treffen...
    ECHO =======================================================
    ECHO 1 = LAN1
    ECHO 2 = LAN2
    ECHO =======================================================
    CHOICE /C:12 Bitte Netzwerk wählen...
    IF ERRORLEVEL 1 GOTO M-1
    IF ERRORLEVEL 2 GOTO M-2
    :M-1
    cls
    ECHO Bitte die gewünschte Verbindung wählen:
    ECHO =======================================================
    ECHO A = LW P mit LINUX1/SYS verbinden
    ECHO B = LW T mit LINUX1/SYS/DB verbinden
    ECHO =======================================================
    CHOICE /C:AB Bitte das Laufwerk wählen...
    IF ERRORLEVEL A GOTO M-A
    IF ERRORLEVEL B GOTO M-B
    :M-2
    cls
    ECHO Bitte die gewünschte Verbindung wählen:
    ECHO =======================================================
    ECHO X = LW O mit LINUX2/SYS verbinden
    ECHO Y = LW K mit LINUX2/SYS/DB verbinden
    ECHO =======================================================
    CHOICE /C:XY Bitte das Laufwerk wählen...
    IF ERRORLEVEL X GOTO M-X
    IF ERRORLEVEL Y GOTO M-Y
    :M-A
    cls
    net use p: \\linux1\sys
    PAUSE
    GOTO CLOSE
    :M-B
    cls
    net use t: \\linux1\sys\db
    PAUSE
    GOTO CLOSE
    :M-X
    cls
    net use o: \\linux2\sys
    PAUSE
    GOTO CLOSE
    :M-Y
    cls
    net use k: \\linux2\sys\db
    PAUSE
    GOTO CLOSE
    :CLOSE
    ECHO Jetzt wird das Programm beendet
    PAUSE
    EXIT

    -------------------------------------------------------------------------------------------

    Jetzt habe ich folgendes Problem.

    Wenn ich nach dem ersten CHOICE Befehl das LAN2 sollte er gleich zum GOTO M-2 gehen. Allerdings wird auch M-1 abgearbeitet. Das will ich aber nicht. Er soll nur M-2 machen.

    Irgendwas mach ich wohl falsch. Habe noch nicht viel mit Batches gemacht.

    Danke für Eure Hilfe.

    Gruß
     
  2. gert12349

    gert12349 Halbes Megabyte

    Registriert seit:
    21. Oktober 2001
    Beiträge:
    651
    Sehr gute Idee :-) Funktioniert nur leider nicht :-(
    Nach errorlevel muss eine Zahl folgen. Die Gleichheitszeichen werden ignoriert. In deinem Beispiel landest du immer bei Edit.

    Gert
     
  3. Jörn Stadelmann

    Jörn Stadelmann Viertel Gigabyte

    Registriert seit:
    7. April 2001
    Beiträge:
    4.450
    Funktioniert aber auch so ;-)

    echo A Microsoft Editor
    echo B Microsoft Anti-Virus
    echo C Microsoft Backup
    echo.
    choice /c:abc Choose an option
    if errorlevel==1 goto Edit
    if errorlevel==2 goto Msav
    if errorlevel==3 goto MSBackup

    J2x
     
  4. gert12349

    gert12349 Halbes Megabyte

    Registriert seit:
    21. Oktober 2001
    Beiträge:
    651
    Der Errorlevel ist grundsätzlich eine Zahl zwischen 0 und 255 und kein Buchstabe. Weiterhin bedeutet z.B. if errorlevel 3 NICHT wenn errorlevel = 3 SONDERN >=3. Das bedeutet, die Abfrage der Errorlevel muss in fallender Reihenfolge stattfinden, also erst 2 und dann 1. Errorlevel 0 bedeutet User-Abruch durch Strg-Break oder Strg-C und Errorlevel 255 ist eine Fehlermeldung vom Choice-Befehl.

    Ein Beispiel:

    echo A Microsoft Editor
    echo B Microsoft Anti-Virus
    echo C Microsoft Backup
    echo.
    choice /c:abc Choose an option
    if errorlevel 3 goto MSBackup
    if errorlevel 2 goto Msav
    if errorlevel 1 goto Edit

    Gruß Gert
     
  5. ede

    ede Kbyte

    Registriert seit:
    18. April 2000
    Beiträge:
    296
    hi nitro,

    hab mal deinen code um ein paar zeilen verkleinert
    und die bindestriche raus, vielleicht hilfts.

    anmerkung: sprungbefehle auf code der unmittelbar folgt sind nicht nötig.

    ____________________________________________________
    @ECHO OFF
    ECHO Mit diesem Batch können Netzlaufwerke verbunden werden!
    ECHO Bitte die gewünschte Auswahl treffen...
    ECHO =======================================================
    ECHO 1 = LAN1
    ECHO 2 = LAN2
    ECHO =======================================================
    CHOICE /C:12 Bitte Netzwerk wählen...
    IF ERRORLEVEL 2 GOTO M2
    cls
    ECHO Bitte die gewünschte Verbindung wählen:
    ECHO =======================================================
    ECHO A = LW P mit LINUX1/SYS verbinden
    ECHO B = LW T mit LINUX1/SYS/DB verbinden
    ECHO =======================================================
    CHOICE /C:AB Bitte das Laufwerk wählen...
    IF ERRORLEVEL A GOTO MA
    IF ERRORLEVEL B GOTO MB
    :M2
    cls
    ECHO Bitte die gewünschte Verbindung wählen:
    ECHO =======================================================
    ECHO X = LW O mit LINUX2/SYS verbinden
    ECHO Y = LW K mit LINUX2/SYS/DB verbinden
    ECHO =======================================================
    CHOICE /C:XY Bitte das Laufwerk wählen...
    IF ERRORLEVEL X GOTO MX
    IF ERRORLEVEL Y GOTO MY
    :MA
    cls
    net use p: \\linux1\sys
    PAUSE
    GOTO CLOSE
    :MB
    cls
    net use t: \\linux1\sys\db
    PAUSE
    GOTO CLOSE
    :MX
    cls
    net use o: \\linux2\sys
    PAUSE
    GOTO CLOSE
    :MY
    cls
    net use k: \\linux2\sys\db
    PAUSE
    :CLOSE
    ECHO Jetzt wird das Programm beendet
    PAUSE
    EXIT
    ___________________________________________________

    hth ede
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen