Befehle direkt in der CMD wählen

Hallo zusammen,
ich wollte frage ob ihr mir bei folgendem helfen könntet:

Kann ich in Batch eine Datei so schreiben, dass ich ein Auswahlmenü habe, z.B:
1 - Shutdown -s
2 - telnet pop3.web.de pop3
3 - regedit
4 - shutdown -s -t 300

Bitte gib ein welchen Vorgang du starten möchtest:

Ist das so oder so ähnlich möglich? Könntet ihr mir vielleicht den Code Posten?
Ist es möglich den Befehlen Titel zu geben meinetwegen
1 - Runterfahren in 30 sec
2 - pop3 via Telnet connecten
und so weiter,....

Und noch was:
Wie kann ich einen String den ich selber in einer forderung eingebe, ane eine befehl weitergeben? z.B:

Bitte IP Adresse des Ziels angeben: 192.168.0.1
ping 192.168.0.1

Oder so ähnlich.
Da ich mich noch nicht so (nur ein bisschen) mit den CMDs auskenne hoffe ich das mir hier geholfen wird.
Vielleicht kent einer von euch ja eine Seite, ein CodeArchiv oder sowas wo ich mir die ganzen SAchen holen kann dann könnt ihr euch wieder anderen Sachen widmen,.......... :)

Vielen Dank im Voraus.
 
servuz,

hier ist eine site, auf der du alles findest, was mit batch files machbar ist, geh am besten auf batch files und dann auf how to - oder zieh dir die examples rein.

aber das mit input sind nur pfusch lösungen - ich würd an deiner stelle ein richtiges programm schreiben, oder die start parameter verwenden mit %1,%2 usw.
und wenn einer keine parameter übergibt - gibst du eine parameterliste aus, wie man die bat benutzt, wofür sie da ist, woher kommen wir - wohin gehen wir...

cya, hants
 
Cmd

Sorry,
aber die seite scheint mir zu alt zu sein.
ich bräuchte befehle die auch unter winxp funktionieren.
trotzdem vielen dank!
 
servuz,

darf man erfahren was genau du machen willst?
mir fällt jetzt nichts ein, was man mit den infos auf der site nicht machen kann...^^
da steht sogar wie man mit bat files api aufrufe macht o_O

so jetzt hab ich mal was getestet - ich denke das geht in die richtige richtung?^^

Code:
@echo off
if "%1" == "1" goto eins
if "%1" == "2" goto zwei 
if "%1" == "3" goto drei  
if "%1" == "4" goto vier 
 if "%1" == ""  goto nix     

:eins
echo on  
shutdown -s  
@goto end    

:zwei  
echo on  
telnet pop3.web.de pop3  
@goto end    

:drei  
echo on  
regedit  
@goto end    

:vier  
echo on  
shutdown -s -t 300  
@goto end    

:nix  
echo benutzung: batname parameter > con  
echo 1 = shutdown -s > con  
echo 2 = telnet pop3.web.de pop3 > con  
echo 3 = regedit > con  
echo 4 = shutdown -s -t 300 > con    

:end

ich hab normal nix mit bat files zutun - darum der (wahrscheinlich) trashcode

bat suxx - ich rate dir: code asm ;)

cya, hants
 
Ja vielen dank,
das ist viel besser.
Ich habe WinXP, wahrscheinlich hast du eine anderes,
denn manche befehle aus dieser seite werden (trotz copy & paste) als nicht
mehr vorhanden ausgegeben.
allerdings hilft mir dein code weiter. vielen dank.
mal sehen ob ich damit was hinkriegen.

Edit:
Noch ein zusätzliches Problem:
Wenn du die eingabe eingeben sollst, dann verschwindet das fenster sofort wieder.
problem: ich kommm gar nicht dazu etaws zu wähöen, weil es ja gleich wieder weg ist!
habs mit dem PAUSE befehl probiert, funzt allerdings nicht.
 
servuz,

warst wohl zu dos zeiten noch nicht dabei ;)

starte die eingabeaufforderung zb so: start ausführen cmd
führe die bat durch eingabe ihren namens aus und übrergib gleichzeitig parameter

zb:
"C:\projects\test.bat 3"

(ohne "" und die erweiterung bat ist nicht notwendig - dient nur der anschaulichkeit und der verwirrung).

so funktionieren die meisten consolenanwendungen^^

besteht der parameter immer nur aus einem buchstaben? - wenn ja kannst du das ganze mit dem choice befehl lösen :)

und zwar ersetzt du den code ab label nix durch:
Code:
:nix
echo benutzung: batname parameter > con
echo 1 = shutdown -s > con
echo 2 = telnet pop3.web.de pop3 > con
echo 3 = regedit > con
echo 4 = shutdown -s -t 300 > con
choice /c:1234 gib was ein man:
if errorlevel 4 goto vier
if errorlevel 3 goto drei
if errorlevel 2 goto zwei
if errorlevel 1 goto eins

:end

cya, hants
 
Mein bisheriger Code:

@echo off
if "%1" == "1" goto eins
if "%1" == "2" goto zwei
if "%1" == "3" goto drei
if "%1" == "4" goto vier
if "%1" == "" goto nix

:eins
echo on
shutdown -s
@goto end

:zwei
echo on
telnet pop3.web.de pop3
@goto end

:drei
echo on
regedit
@goto end

:vier
echo on
shutdown -s -t 300
@goto end

:nix
echo benutzung: batname parameter > con
echo 1 = shutdown -s > con
echo 2 = telnet pop3.web.de pop3 > con
echo 3 = regedit > con
echo 4 = shutdown -s -t 300 > con
choice /c:1234 gib was ein man:
if errorlevel 4 goto vier
if errorlevel 3 goto drei
if errorlevel 2 goto zwei
if errorlevel 1 goto eins

:end

Das Problem:
Ich kann immer noch nix eingeben!
 
servuz,

ich hab keine xp kiste da, auf der ich das testen könnte,aber der code ist so wie er da steht (meiner meinung nach) fehlerfrei...

machs so wie mit den meisten commandline programmen wie zb format usw:
du öffnest die eingabeaufforderung und führst die bat mit startparametern aus (wie weiter oben schon beschrieben)^^

völlig unmöglich das dass bei dir nicht geht

cya, hants
 
doch das geht schon.
ich wollte ja eigentlich ein eine aufforderung:

beispiel:

Was möchtest du tun? ...

[1] shutdown - s
[2] telnet pop3.web.de pop3

und so weiter
so dass man eingeben kann was man tun will.
dein code funktioniert ja auch, danke.

weisst du was ich meine?
 
servuz,

ich weiss was du meinst - dass problem ist nur: bei mir funktioniert es mit dem code^^

wenn es mit der batch nicht geht ist der einzige ausweg der mir einfällt ein richtiges programm zu schreiben das alles erledigt. oder wenn du unbedingt batches(?) verwenden willst eins das nur die eingabe liest und an die bat übergibt.

wenn du das alles nur in einer datei haben willst == einer bat - dan kannst du in asm eine kleine com file schreiben und diese dan mit der batch file binär erzeugen und ausführen. ich glaub es gab mal viren die diese technik verwendet haben(ist aber kein grund für antivirenprogramme alarm zu schlagen).
eine andere möglichkeit asm befehle in bats einzubinden ist der assemblerinterpreter im debug mode(und ich hab keine ahnung wie man damit was zum laufen kriegt^^).

hmm schreib du einfach mal so zu testzwecken eine bat die den choice befehl ausführt und sonst nichts, wenn die bat sich von alleine schließt hast du entweder ein echtes problem mit batches(?) oder der choice befehl ist defekt- und du musst eine eigene version davon schreiben(wie etwas weiter oben beschrieben).

ich versuch mal eine beispielbat zu schreiben -> fortsetztung folgt

cya, hants
 
servuz,

daraus schliesse ich du kannst kein ASseMbler ^^
asm wegen den größenbeschränkungen von bat files, und weil der code einer com datei die diese aufgabe erfüllen muss in wenige zeilen passt und so deine batch nicht unnötig verunstaltet.

assembler solltest du kennen(besser noch können ;) ) das sind direkte prozessoranweisungen und nicht fertige zusammengesetzte prozeduren wie etwa printf();

cya, hants
 
servuz,

hmm schreib du einfach mal so zu testzwecken eine bat die den choice befehl ausführt und sonst nichts, wenn die bat sich von alleine schließt hast du entweder ein echtes problem mit batches(?) oder der choice befehl ist defekt

also schliesst sich die bat von alleine oder nicht?

cya, hants
 
servuz,

argh das ist schlecht ~~

last try:

Code:
@echo off
::---- Generated by CONV2BAT ----
:: CM3-encoded DecBin decoder...
ECHO:`h}aXP5y`P]4nP_XW(F4(F6(F=(FF)FH(FL(Fe(FR0FTs*}`A?+,>_d.com
ECHO:fkOU):G*@Crv,*t$HU[rlf~#IubfRfXf(V#fj}fX4{PY$@fPfZsZ$:NvN$>>_d.com
ECHO:9AyroNB-)dOKwK0rRkfTbi)ws_~[[q9wE'sqlu1sY*Bsfe=@ziNS1a)88e>>_d.com
ECHO:f9RTL)9Z{3INBD?o6@MDLO{Zz4Q23E-'09NX9@Vz(42A7c8zMS:u$w6k5Q>>_d.com
ECHO:N,h:le)~gF?tutTyxoe5UiIdtn';0rJ1q:{7;lAl']y:yTjZBbOo?QRIdN>>_d.com
ECHO:$Bp@P/nAp_r0*4f'XcF4q3o?$_t5lx$Q-OxSfUNQ__Gd~$Q-Oxgkx=LGHU>>_d.com
ECHO:S)$C6P8#>>_d.com
::---- EncBin-encoded binary ----
:: test.com made with ????
ECHO:AAEK]n2t4]3DGXf17D8vGkS2ae2nb9fln1jXVe2nb9fxn1jX2r1C7D9a9c>_t.tmp
ECHO:OW0k9\scOAGD8c8WTcXZPnTcOAGD8cOWPXDfTZ1b8AGD80}>>_t.tmp
::-------------------------------
:: decode/run/delete, modify as needed...
_d.com < _t.tmp > test.com
:: use test.com as needed
del _t.tmp
del _d.com

test.com


diese bat erzeugt eine com file die dich auffordert 1 einzugeben - wenn sie sich von alleine schließt kannst dus vergessen(das heisst du musst richtige programme schreiben oder deine dos einstellungen ändern)^^

den zu bat converter findest du hier: http://www.infionline.net/~wtnewton/batch/conv2bat.htm

war jezt zu faul das manuell zu converten ;)

cya, hants
 
servuz,

ist ja der hammer 8o

start mal die test.com - schliesst sie sich bevor du was eingeben kannst?

cya, hants
 
Ich hab das problem gelöst!
und zwar so

@echo off
echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
echo X X
echo X SANiTYs Multi-Batch X
echo X X
echo X [0] Pc faehrt in 30 Sekunden herunter. X
echo X [1] Telnet Verbindung zu web.de herstellen. X
echo X [2] Test X
echo X X
echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
echo.
SET /P zm=Waehlen Sie 0, 1 oder 2:
if (%zm%)==(0) GoTo :test

:test
cls
echo test
PAUSE
 
Hallo.

Also die Lösung ist eigentlich ganz einfach:

Verknüpfung der CMD auf Desktop erzeugen. Die Batch (wir nennen sie mal "Test") einfach in System32 packen und dann die Verknüpfung auf dem Desktop mit der rechten Maustaste anklicken, Eigenschaften wählen und unter dem Eintrag "Ziel" definierst du den Pfad zur CMD mit C:\WINDOWS\system32\cmd.exe /k test.bat

Der Paramter /k lässt deine Konsole offen. ;)

Thats it.

Gruss

root
 
Zurück
Oben