Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Dos Tastenbelegung

Andrea Siegert / 10 Antworten / Baumansicht Nickles

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?

bei Antwort benachrichtigen
Borlander Andrea Siegert „Dos Tastenbelegung“
Optionen
rem *** Als erstes muß das Prompt als Systemprompt gespeichert werden.

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
bei Antwort benachrichtigen
Andrea Siegert Borlander „ So änderst Du das Promt in den Text Systemprompt , der anschließend statt...“
Optionen

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!

bei Antwort benachrichtigen
Andrea Siegert Borlander „ So änderst Du das Promt in den Text Systemprompt , der anschließend statt...“
Optionen

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?

bei Antwort benachrichtigen
Borlander Andrea Siegert „Dos Tastenbelegung“
Optionen

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

bei Antwort benachrichtigen
Andrea Siegert Borlander „Hallo Andrea! Wieso kannst Du es nicht testen Hier ergibt sich das Problem dass...“
Optionen

OK und danke für deine hilfe!!! :-)

bei Antwort benachrichtigen
Andreas42 Andrea Siegert „OK und danke für deine hilfe!!! :- “
Optionen

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

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
Andrea Siegert Andreas42 „Hi! Nur als Info: Auf die SHIFT-Anweisung kannst du wirklich verzichten, die war...“
Optionen

Hallo!

wofür ist sie sinvoll???

bei Antwort benachrichtigen
Andreas42 Andrea Siegert „Hallo! wofür ist sie sinvoll???“
Optionen

Hi!

In diesem Beispiel war sie sinnvoll (und nötig):
: DosProgrammierung, frage zu Protokolldatei?

Schon vergessen? ;-)

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
Andrea Siegert Andreas42 „Hi! In diesem Beispiel war sie sinnvoll und nötig : : DosProgrammierung, frage...“
Optionen

Ich werde es halt nie richtig begreifen, muß aber noch ein paar Aufgaben abarbeiten!

bei Antwort benachrichtigen
Dr. Hook Borlander „Hallo Andrea! Wieso kannst Du es nicht testen Hier ergibt sich das Problem dass...“
Optionen

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

bei Antwort benachrichtigen