Hallöchen!
Ich habe hier eine kniffelige Aufgabe zu beanworten, aber schaffe es nicht allein. Wer kann mir dabei helfen?
Und los gehts:
Batch-Datei erstellen,mit wahlweise 2 verschiedennen Tastenbelegungen, auswahl durch Eingabe einer Option. Durch Eingabe der Option \\3 sollen alle Belegungen gelöscht werden und das Systemprompt restauriert.
Das ist die Aufgabe und nun mein verzweifelter Ansatz.
@ echo off
rem *** Als erstes muß das Prompt als Systemprompt gespeichert werden.
set prompt=systemprompt
rem *** Nun kann man beginnen die 2 Tastenbelegungen zu schaffen. damit diese funktionieren muß der Treiber Ansi.sys geladen sein, man kann ihn einfach in die Cpnfig.sys installieren. Bei der ersten Belegung soll der Befehl dir ausgeführt werden, durch die Eingabe von ALT+D.
prompt $e[0;32;"dir";13p
rem *** Diese Belegung speichere ich jetzt und entferne das prompt wieder um um die zweite Belegung zu schaffen und ebenfalls wieder entfernen.
set prompt=prompt1
prompt $e[0;32p
rem *** Bei der zweiten Belegung soll durch Eingabe von ALT+W das Verzeichnis \\Word geöffnet werden und das Programm Word ausgeführt werden.
prompt $e[0;17;"cd\\word";13;"word"13p
set prompt=prompt2
prompt $e[0;17p
rem *** Ich habe jetzt das Systemprompt gespeichert um es nachher mit der Option \\3 wieder restaurieren zu können und 2 Tastenbelegungen geschaffen,gespeichert. Nun kommt auch schon mein Problem, wie bekomme ich durch Eingabe einer Option die Belegungen gewächselt und wie durch die Option \\3 gelöscht um den Urzustand(Systemprompt) herzustellen?
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
set prompt=systemprompt
So änderst Du das Promt in den Text "Systemprompt", der anschließend statt "Laufwerk:\Pfad\" angezeigt wird. Wenn Du das Prompt als Systemprompt sichern willst, Zwecks späterer Rücksicherung muss das ganze so aussehen:
SET SYSTEMPROMPT=%PROMPT%
Die Variable der ein Wert zugewiesen werden soll muss auf der linken Seite stehen. Die Variable Prompt muss als %PROMPT% eingefügt. Das Prozentzeichen dient als Escapezeichen um Variablen von Normalem Text zu unterscheiden.
Wiederherstellen kannst Du das ganze dann mit:
SET PROMPT=%SYSTEMPROMPT%
Kommandozeilenoptionen:
Die Kommandozeilenoptionen werden sind in den Variablen %n (n = Ganzzahl >=1) der Reihe nach gespeichert. Um entsprechend nach Parametern zu Unterscheiden brauchst Du eine IF-Anweisung. Für jede Option solltest Du eine Sprungmarke erstellen und vor der Sprungmarke der nächsten Option zum Ende springen. Dafür solltest Du auch am Ende eine Sprungmarke definieren.
CU Borlander
Hallo!
Ok habe dran gearbeitet, könnte es dann so aussehen, kann es leider nicht testen?
@echo off
set Systempromrt=%prompt%
prompt $e[o;32;"dir";13p
set prompt1=%prompt%
prompt $e[0;32p
prompt $e[0;17;"cd\word";13;"word";13p
set prompt2=%prompt%
prompt $e[0;17p
if"%1"=="/1" then goto prompt1
if"%1"=="/2" then goto prompt2
if"%1"=="/3" then goto Systemprompt
if"%1"=="" then goto ende
:prompt1
set prompt=%prompt1%
shift
goto ende
:prompt2
set prompt=%prompt2%
shift
goto ende
:Systemprompt
set prompt=%Systemprompt%
shift
goto ende
:ende
echo Das war`s!
Hi!
Habe noch was vergessen wenn die option/3 eingegeben worden ist sollen ja die anderen belegungen gelöscht werden wie mache ich das am besten?
Hallo Andrea!
kann es leider nicht testen?
Wieso kannst Du es nicht testen
@echo off
set Systempromrt=%prompt%
Hier ergibt sich das Problem dass Prompt nicht mehr wiederherstellen lässt, wenn Das Script 2x aufgerufen wurde. Also besser noch eine
entsprechende Abfrage rein:
IF %SYSTEMPROMPT%=="" THEN SET SYSTEMPROMPT=%prompt%
prompt $e[o;32;"dir";13p
set prompt1=%prompt%
prompt $e[0;32p
prompt $e[0;17;"cd\word";13;"word";13p
set prompt2=%prompt%
prompt $e[0;17p
Beide Blöcke werden nur gebraucht wenn die Entsprechende Option ausgewählt wird, also in den Entsprechenden Abschnitt rein (prompt1/2).
Der String den Du als PROMT Übergibst kann ich nicht nachvollziehen, aber wenn ich das richtig verstanden habe willst Du Tastenkombinationen für Befehle vergeben. Das ist AFAIK nicht übers Prompt möglich, sondern mit DOSKEY-Makros.
:prompt1
set prompt=%prompt1%
shift
goto ende
:prompt2
set prompt=%prompt2%
shift
goto ende
:Systemprompt
set prompt=%Systemprompt%
shift
goto ende
:ende
echo Das war`s!
Wofür bruchst Du den SHIFT-Befehl Du hast doch nur einen Parameter?
Habe noch was vergessen wenn die option/3 eingegeben worden ist sollen ja die anderen belegungen gelöscht werden wie mache ich das am besten?
Sollte das Script doch so schon machen, indem das Prompt wieder hergestellt wird.
Ich habe das ganze nicht getestet und kann auch nicht garantieren, dass das Script syntaktisch korrekt ist, das musst Du schon selbst machen.
CU Borlander
OK und danke für deine hilfe!!! :-)
Hi!
Nur als Info:
Auf die SHIFT-Anweisung kannst du wirklich verzichten, die war in dem anderen Fall sinvoll, hier allerdings nicht (mehr). ;-)
Bis denn
Andreas
Hallo!
wofür ist sie sinvoll???
Hi!
In diesem Beispiel war sie sinnvoll (und nötig):
: DosProgrammierung, frage zu Protokolldatei?
Schon vergessen? ;-)
Bis denn
Andreas
Ich werde es halt nie richtig begreifen, muß aber noch ein paar Aufgaben abarbeiten!
Hi Borlander,
ich habe zwar sowas schon länger nicht mehr gemacht, aber könnte man nicht alternativ den ASK-Befehl von Norton einsetzen und dann mit ERRORLEVEL arbeiten? Oder ist das hier nicht erlaubt?
cu
Dr. Hook