nyrados
Goto Top

Eine art Eingabeaufforderung (Batch)

Hallo,
Könnte man mit Batch eine art Eingabeaufforderung simulieren mit /set /p sprich das dann mit call
eine andere Batch ausgeführt wird wo man aber nach dem Dateiname aber noch was eingeben kann z.b.

main.bat:

@echo off
:start
set /p Command=Command:
if not exist %Command%.bat goto start
call %command%.bat "%WasManDanebenGeschriebenHat%" "%WasManNachdemDanebenGeschriebenHat%"
pause <NUL

z.B. Wenn %Command% als hallo definiert wird

hallo.bat

@echo off
set 1=%~1
set 2=%~2
echo %2% %1%

Ich weiß nicht genau ob ihr versteht was ich meine aber man kann es ja mal probieren. :D

Content-Key: 286028

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

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

Member: MephMan
MephMan Oct 19, 2015 at 13:10:46 (UTC)
Goto Top
Warum die Eingabeaufforderung simulieren und nicht einfach gleich via CMD Parameter an eine Batch übergeben?

cmd /C hallo.bat arg1 arg2 arg3

Aber um auf deine Frage zu antworten:

Grundsätzlich geht das, ich würd aber vielleicht versuchen, die Zeile zu parsen.
Das erste Wort bekommt das Suffix ".bat"/".cmd".
Dann wird die Zeile wieder zusammengeführt und so via call aufgerufen.

Ich bin jetzt auch nicht der Batch-Profi, vielleicht können hier ja mal die Gurus des Forum ihren Senf dazu geben?
Member: Nyrados
Nyrados Oct 19, 2015 at 14:23:09 (UTC)
Goto Top
Danke für die Antwort,
Was meinen sie denn mit parsen?
Member: MephMan
MephMan Oct 19, 2015 updated at 14:58:56 (UTC)
Goto Top
Damit mein ich jetzt in dem Zusammenhang, die Zeile, die du eingibst (z.B.: "hallo arg1 arg2 arg3")
in seine Einzelteile zu zerlegen (also: "hallo", "arg1", "arg2", "arg3),
den ersten Teil zu nehmen ("hallo")
und mit dem Suffix zu versehen ("hallo"+".bat").
Anschließend alles wieder zusammenführen ("hallo.bat arg1 arg2 arg3").

So hast du dann denn Aufruf:

call hallo.bat arg1 arg2 arg3

Ich kann dir später noch ein Beispiel für sowas geben.

Gruß
Till

Ich habs mir grad nochmal durch den Kopf gehen lassen.
Ich wüsste grad nur ne Methode, wie man so etwas Zeilenweise machen könnte.

Bzw ...
Ich hab vor einiger Zeit auch mal ne IP für n Script zerlegt.
Ähnliches Verfahren.

for /f "tokens=1-4 delims=." %a in ("192.168.1.100") do @echo var1: %a var2: %b var3: %c var4: %d  
Member: Endoro
Endoro Oct 20, 2015 at 04:09:03 (UTC)
Goto Top
Hey, ich glaube auch, das Beste ist das Kommando von cmd parsen zu lassen.
cmd /c %command%
Gruß, Endoro
Member: holli.zimmi
holli.zimmi Oct 20, 2015 at 06:29:57 (UTC)
Goto Top
Hi,

was ist mit dem Befehl "choice" ?

Gruß

Holli
Member: Nyrados
Nyrados Oct 29, 2015 updated at 17:12:16 (UTC)
Goto Top
Danke für eure Antworten ich hatte mir eine Portion Urlaub gegönnt weswegen ich nicht antworten konnte danke!
Member: MichaelW84
MichaelW84 Oct 31, 2015 updated at 15:01:38 (UTC)
Goto Top
Du könntest folgendes machem:


echo Programmnamen angeben:
Set /p programm=
If %programm%==programm1 goto programm1

:programm1
Set /p Parameter=

Call "programm1.bat" "%parameter%"   
Echo Programm ausgeführt. 
Pause
Exit


In etwa so könnte man das vielleicht auch lösen wenn ich dich richtig verstanden habe.
Member: Nyrados
Nyrados Oct 31, 2015 at 16:39:08 (UTC)
Goto Top
Könnte man so machen finde ich aber nicht so praktisch aber Trotzdem Danke