zottelhias
Goto Top

Probleme bei der Kombination von Befehlen

Guten Tag Forum,

ich habe ein Problem beim kombinieren mehrerer Befehle in einer Batchdatei, die bei 9 unterschiedlichen eingaben 9 verschiedene Dateien (1.bat, 2.bat, 3.bat usw.) aufrufen soll.

Mein Problem sieht wie folgt aus:


set /P X=Eingabe

if errorlevel 1 goto 1
if errorlevel 2 goto 2
if errorlevel 3 goto 3

if errolevel usw...

:1
call cd /Laufwerk:/Pfad/1.bat

:2
call cd /Laufwerk:/Pfad/2.bat

:3
call cd /Laufwerk:/Pfad/3.bat

:usw...


Sollte ich bei der Suche ein Ergebnis übersehen haben, bitte ich um den Link und um verzeihung.


Mit freundlichen Grüßen

Zottelhias

Content-Key: 183389

Url: https://administrator.de/contentid/183389

Printed on: April 19, 2024 at 05:04 o'clock

Member: NetWolf
NetWolf Apr 11, 2012 at 17:34:14 (UTC)
Goto Top
Moin Moin,

wenn du dein Problem "zeigst" und nicht beschreibst, woher sollen wir wissen was nicht funktioniert?
Lass mich raten (sind wir hier beim Jauch? Kann ich was gewinnen?)

Call CD (Change Directory) und dann der Aufruf der Batch - Datei funktioniert nicht?

Grüße aus Rostock
Wolfgang
(Netwolf)
Member: mak-xxl
mak-xxl Apr 11, 2012 at 17:46:25 (UTC)
Goto Top
Moin zottelhias,

Zitat von @Zottelhias:
ich habe ein Problem beim kombinieren mehrerer Befehle in einer Batchdatei, die bei 9 unterschiedlichen eingaben 9 verschiedene
Dateien (1.bat, 2.bat, 3.bat usw.) aufrufen soll.

Mein Problem sieht wie folgt aus:
So sieht es aus - und was tut es (nicht)?
set /P X=Eingabe
Das eher so:
set /p eingabe=
if errorlevel 1 goto 1
if errorlevel 2 goto 2
if errorlevel 3 goto 3

if errolevel usw...
Errorlevel helfen hier wenig (das wäre i.e. PureDOS und choice.exe), Du musst vergleichen, etwa so:
if [%eingabe%] == [1] goto :1
if [%eingabe%] == [2] goto :2
:1
call cd /Laufwerk:/Pfad/1.bat
OS ist Win? oder DOS - dann u.a. Backslashes, also so:
call "D:\Ordner\Unterordner\1.bat"  
goto :end
Wenn Du Laufwerk und Pfade wechseln willst, schau Dir die Hilfe zu 'cd', 'pushd' und 'popd' an. Das 'goto :end' verhindert das Abarbeiten aller nachfolgenden Blocks.

Am Ende des Batches noch ein ':end' notieren, in dem Block kannst Du Code notieren, der zum Schluss ausgeführt wird, z.B. eine Meldung, ein cls etc.

Und benutze beim Posten von Quellcode bitte (auch nachträglich) die -Tags.

Freundliche Grüße von der Insel - Mario
Member: bastla
bastla Apr 11, 2012 at 17:49:55 (UTC)
Goto Top
Hallo Zottelhias!

Ich weiß ja nicht, woher Du die unterscheidlichen Errorlevel erhalten willst - aber wenn Du das tatsächlich mit "if errorlevel"-Abfragen lösen willst, dann aber in absteigender Reihenfolge (da eine solche Abfrage immer auf >= Errorlevel prüft) ...

Da die Eingabe ja aber anscheinend in der Variablen %X% landen soll, wäre eher
if "%X%"=="1" goto :1  
if "%X%"=="2" goto :2  
...
sinnvoll ...

Ach ja - soferne die einzelnen Batches im selben Ordner liegen sollten, würde sich natürlich auch einfach
if exist "D:\Pfad\%X%.bat" call "D:\Pfad\%X%.bat"
oder - wenn's wirklich ein "cd" auch noch sein soll -
if exist "D:\Pfad\%X%.bat" (cd /d "D:\Pfad" & call %X%.bat)
anbieten.

Grüße
bastla

P.S.: Code- lässt sich auch im Nachhinein noch hinzufügen ...
Member: bastla
bastla Apr 11, 2012 at 17:54:28 (UTC)
Goto Top
@mario
Das 'goto end' verhindert das Abarbeiten aller nachfolgenden Blocks.
Und wenn nach dem Aufruf des gewählten Batches dann überhaupt schon Ende sein sollte, könnte einfach auf "call" verzichtet werden ...

Grüße
bastla
Member: Arano
Arano Apr 11, 2012 at 17:55:15 (UTC)
Goto Top
Moin moin

Ich frage mich gerade, ob so überhaupt zu den Marken gesprungen werden kann !?
Steht wirklich die abgefragte Eingabe in der Variable %errorlevel% ?

Kann es gerade nicht selber teste aber es dennoch einwerfen ...aber wir sind hier ja beim Jauch ;)
Hast du den Inhalt von %errorlevel% überprüft !?


~Arano
Member: Zottelhias
Zottelhias Apr 11, 2012 at 18:03:19 (UTC)
Goto Top
Danke an euch, es klappt.


Grüße

Zottelhias
Member: Zottelhias
Zottelhias Apr 11, 2012 at 19:07:43 (UTC)
Goto Top
Die Lösung war einfach.

@set /p X=Eingabe

if /i "%X%"=="1" goto:1
if /i "%X%"=="2" goto:2
if /i "%X%"=="3" goto:3

if /i usw.

:1
call 1.bat


Gruß

Zottelhias
Member: bastla
bastla Apr 11, 2012 at 19:12:09 (UTC)
Goto Top
Hallo Zottelhias!

Das mit dem klappt ja leider noch nicht bei Dir - aber immerhin kannst Du mit "if /i" schon sicher stellen, dass es egal ist, ob "1" in Klein- oder Großbuchstaben eingegeben wurde ... face-wink

Grüße
bastla