online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon hiphoop vom 24.08.2021, 20:16 Options

Lösung

F-Tasten in einer Batchdatei ?

Hallo liebes Forum,
Ich bin hier im Forum neu und hoby batch Programmiren.
Habe bis her nur klein kram gemacht so was was einer von euch einfach mal so aus den handgelenk schüttelt.

Nun möchte ich mich den aber mal doch an ein Größeres Projekt wargen.
Jetzt scheiter ich aber schon an den ersten gedanken.

Und zwar ist mein Problem/Gedanke das ich die F Tasten in der Batch benutzen möchte.

Also Drücke F2 um das Progrmm zu starten so etwas und ohne eingabe der Enter Taste hinterher.

Gibt es da eine Möglichkeit oder Alternative ansätze bin für Vorschläge offen.


Danke in Forraus.


Antwort schreiben

Antwort 1 von Computerfreaki vom 24.08.2021, 22:38 Options

Hallo hiphoop,

Batch-Skripte sind dafür da, immer wiederkehrende Aufgaben zu automatisieren.

Eigne dir lieber VB.NET an und schreibe ein richtiges Programm. Mit diesen paar zeilen Code könntest du dann auf eine F-Taste reagieren:

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
  Handles MyBase.Load
	Me.KeyPreview = True
End Sub
 
Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As _
  System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
If e.KeyCode = Keys.F3 Then
	MessageBox.Show("Die F3-Taste wurde gedrückt und wieder losgelassen.")
End If

mfg
jan
End Sub

Antwort 2 von son_quatsch vom 25.08.2021, 07:33 Options

Schlau schlau, Computerfreaki. Nur, dass du hier auf eine Anwendung mit GUI verweist, wohingegen hiphoop vielleicht in seiner Konsole ohne GUI bleiben will.

Es gibt nichts, um auf Funktionstasten zu reagieren - dazu musst du schon ein richtiges Programm schreiben, statt nur ein Skript.

Antwort 3 von kicia vom 25.08.2021, 09:00 Options

Ich stimme zu, um Events abzufangen, brauchts immer irgendeine Art "Schleife", die ständig schaut, was reinkommt. Das bieten die mir bekannten Scripting möglichkeiten alle nicht.

Für den Fall, daß es doch nicht nur Konsole sein darf, würd ich dennoch gern auf meinen Artikel hinweisen:

Windows scripting - alles ist möglich


Das ist für mich der natürliche nächste Schritt von Batch richtung Programmieren.

Wenn Du richtig ins Programmieren einsteigen willst, ist eine richtige Programmiersprache sicher die bessere Wahl.
Ich empfehle dann aber, genau zu überlegen, welche die geeignete ist.
Ich respektiere Basic, aber man sollte wissen, wo man wie schnell hinwill.

Antwort 4 von Flupo vom 25.08.2021, 10:35 Options

Alles ist möglich. ;-)
Ich habe selbst vor Urzeiten (knapp 20 Jahre ist das schon her) bestimmte Befehle auf die F-Tasten gelegt um mir die Tipperei zu sparen. Das Zauberwort dafür heißt "ANSI-Escape-Sequenzen".
Hier gibts ein paar Infos dazu.

Gruß Flupo

Antwort 5 von Como vom 25.08.2021, 12:57 Options

Hi,
kannst du mit Windows Scripting Host oder mit VBScript. Ist in Widows integriert.

Antwort 6 von hiphoop vom 25.08.2021, 17:15 Options

ich finde es sehr nett wie ihr mir helfen müchtet.
Aber ich würde gerne bei batch bleiben jedenfals forerst.
Die "ANSI-Escape-Sequenzen" sind mir persönlich momentan noch zu komplizirt.

Gibt es unter batch wenigstens eine möglichkeit
das mann eine variable setst und mann danach keine eingebe taste drücken muss
also normalerweise

set /p ver=
den wartet das programm auf die variable "ver" und mann muss noch einmal die Enter Taste grücken um diese zu bestätigen.
Wie kann ich das Drücken der Enter taste vermeiden.

Antwort 7 von Ralfman vom 25.08.2021, 17:26 Options

Wie meinst Du das nun genau?
Wenn Du keinerlei Eingabe möchtest, brauchst Du auch nicht mit set Arbeiten. Du rufst den gewünschten Befehl einfach auf.
So ist das von Dir aber sicherlich nicht gemeint, daher klär uns bitte mal auf.
Hilfreich währ es auch uns Deinen bishereigen Quellcode zukommen zu lassen und zu Erklären was der eigentlich machen soll.
Ist sicherlich nur sehr unglücklich Ausgedrückt von Dir, aber wir haben alle mal kein angefangen.
Helf uns zu Verstehen, und wir Helfen Dir zu Verstehen ;-)

Ralf

Antwort 8 von hiphoop vom 25.08.2021, 17:39 Options

Also ein bisheriger quell code exestirt noch nicht weil das einfach ein grundligendes proble ist aber ich versuch mal es dir zu beschreiben was ich möchte.

Um von ein benutzer eingeben in einer batch su verarbeiten muss mann diese ihn eine variable setzen dies geschit mit den befehl set ver=

Beispiel

echo [1] Um zu starten
echo [2] Zum abrechen
set /p start=
if "%start%"=="1" goto start
if "%start%"=="2" goto ende

jetzt muss der benutzer aber 2 Tasten drucken nehmlich
die 1 (zum Starten)
und dei Eingabetaste (damit die batch weiter leuft#

wie kann ich das benutzten der eingabetaste unterdr´ücken so das nur
die 1 gedrucktwerden muss



Danke für die schnelle antwort

Antwort 9 von Ralfman vom 25.08.2021, 20:52 Options

Mit dem Set Befehl wirst Du da nicht weiterkommen, was Dir Helfen könnte währ das Abfangen eines Errorlevels. Dafür brauchst Du aber noch aus alten Zeiten den Befehl choice (wurde aus neueren Betriebssystemen Entfernt - leider und schade drum). Falls Dir das weiterhelfen würde, sag bescheit, ich kann Dir Choice auch irgendwo Ablegen zum Dorwnload (machen wir dann aber über den Pager, Werbung wird hier nicht gern gesehn).
Mit choice wird dann ein Errorlevel abgefangen der ohne Bestätigung weitergeleitet wird. Allerdings auch nur einzelne Zeichen (Buchstaben/Zahlen).

Ralf

Antwort 10 von hiphoop vom 25.08.2021, 21:37 Options

das wäre schon eine hilfe aber bekommt man das nicht auch irgentwie in xp und vista zum leufen ?

Antwort 11 von Ralfman vom 25.08.2021, 23:19 Options

Klar, Du mußt nur die choice.com in Dein system32 Verzeichnis Kopieren.
Nur auf anderen Systemen wird das leider nicht funktionieren, da dort die choice.com nicht Existiert. Auch auf 64 Bit Systemen kappt das garantiert nicht, aber das liegt an choice.

Ralf

Antwort 12 von hiphoop vom 27.08.2021, 22:05 Options

Danke für deine antwort.

köntest du mir bitte mal den syntax erklären ?

Antwort 13 von Ralfman vom 27.08.2021, 22:52 Options

Klar kann ich ;-)

ECHO. 
ECHO.
ECHO     K     Eine Aktion
ECHO     A     Noch 'ne Aktion
ECHO     S     Und schon wieder Passiert was
ECHO     X     Hopla, auch hier geschieht was
ECHO     F     Und schon wieder 'ne Aktion
ECHO     V     Auch nicht übel
ECHO     D     Ist doch gar nicht schwer
ECHO     G     G drücken? Warum nicht
ECHO     P     Pah, mach ich doch
ECHO     N     Mal sehn was Passiert
ECHO     R     Der Text geht mir aus
ECHO     L     Spot aus, Licht an!
ECHO     E     Eben 'darum solls ja sein
ECHO     9     Nun reicht es aber
ECHO.
ECHO.
CHOICE     /c:KASXFVDGPNRLE9      Wähle eine Option... 
IF ERRORLEVEL 14 GOTO HST
IF ERRORLEVEL 13 GOTO EDI
IF ERRORLEVEL 12 GOTO LESE
IF ERRORLEVEL 11 GOTO ER
IF ERRORLEVEL 10 GOTO NTF
IF ERRORLEVEL 9 GOTO PQD
IF ERRORLEVEL 8 GOTO DW
IF ERRORLEVEL 7 GOTO DC
IF ERRORLEVEL 6 GOTO VOLL
IF ERRORLEVEL 5 GOTO FORM
IF ERRORLEVEL 4 GOTO XFD
IF ERRORLEVEL 3 GOTO S0K
IF ERRORLEVEL 2 GOTO ASTR
IF ERRORLEVEL 1 GOTO KE


Zur Erklärung,
Echo. macht eine Leerzeile (sieht nur hübscher aus).

Die weiteren Echo Anweisungen geben nur Text aus.

choice /c: musst Du so auf jeden fall Tippen, danach ohne lücke die Zeichen die Du abfangen möchtest (Überseh die lücke nicht nach choice).

IF ERRORLEVEL 'n' GOTO ist eine Sprungadresse (frag wenn Du noch nicht damit umzugehen weist) ("n" ist der Abzufangende Errorlevel).

WICHTIG!!! Das Abfangen der Errorlevel beginnt immer von unten nach oben. Daher steht Errorlevel 14 oben unt Errorlevel 1 ganz unten.

Und wenn Du dann zur Sprungadresse gehüpft bist, kannst Du die nächste Choice Anweisung Schreiben und die selben Zeichen mit anderen Sprungadressen Verwenden (drei mal hintereinander auf X drücken, und jedesmal erschein ein anderes Menü, ich hoffe mal das kommt einigermaßen Verständlich rüber).

Ralf

Antwort 14 von Ralfman vom 27.08.2021, 22:57 Options

und mit t, sowas ist mir auch noch nicht Passiert, aber das muss am Wetter liegen, da ist die Konzentration völlig am Boden. Aber als erstes werd ich die Katze vom Schreibtisch schubsen und 'nen Blatt Papier zusammenknüllen. Dann ist sie Beschäftigt und ich hab meine Ruhe :-)

Ralf

Antwort 15 von hiphoop vom 28.08.2021, 00:35 Options

Danke schon mal dafür.
Ja sprung marken kenne ich schon und ja das ist das was ich will (eigentlich zwar mit den F-tasten aber das tut es auch)

Aber eine frage wann wir der errorlevel auf 1 oder 2 gesetzt und warum goto KE
wenn ich nur nach k oder e will ?

Antwort 16 von Ralfman vom 28.08.2021, 01:12 OptionsLösung

Lösung
Bleiben wir beim Beispiel K. K ist die Taste die gedückt wird, und KE ist die Sprungmarke. Genausogut hätte dort auch XYZ stehen können.
Das ist ein Schnipsel aus einer Batch die ich vor ewigkeiten mal gebastelt hab (ich habe nur die Aktionen ersetzt), also nicht weiter wundern. Die Errorlevel werden vom höchsten zuerst abgefragt (also 256) und danach heruntergezählt. Deshalb den niedrigsten zum Schluss denn Batch ist Zeilenorientiert.

Ich habe vor vier Jahren mal 'nen Aprilscherz gebastelt (ohne choice) 89KB "groß" [immerhin über 3700 Zeilen, selbstvernichtend ala Mission Impossible, Farbspielereien und einer netten Unterhaltung mit Deinem Rechner. Brauchst nur 'ne viertel Stunde Zeit und einige Tage um den Quellcode zu durchforsten], wenn Du willst, schicke ich Dir den zum Anschauen und Lernen gern zu. Mußt mir nur über den Pager Deine email Adresse geben.

Ralf

Antwort 17 von hiphoop vom 28.08.2021, 20:15 Options

Vielen dank ich glaube ich schliese das jetz mal es gibt ja noch den patscher.

Antwort 18 von ralfb vom 28.08.2021, 21:58 Options

kleine Ergänzung zu AW 14

Die Abschnitte für die Sprungziele müssen mit Doppelpunkt beginnen ...und Sprünge zum Ende oder wieder nach oben ins Menü können auch Sinn machen

Bsp.:

ECHO. 
ECHO.
:menu
cls
ECHO     Willkommen zum Demostartmenü
Echo.
ECHO     A     Aktion 1
ECHO     B     Aktion 2
ECHO     E     Beenden
ECHO.
ECHO.
CHOICE     /c:EBA      Wähle eine Option... 

IF ERRORLEVEL 3 GOTO aktion1
IF ERRORLEVEL 2 GOTO aktion2
IF ERRORLEVEL 1 GOTO end

:aktion1
[weitere Befehle]
goto menu

:aktion2
[weitere Befehle]
goto menu

:end
echo ...und Tschüss!



automatische Auswahl nach festgelegten Sekunden wenn nicht gewählt wird gibt es auch

CHOICE     /c:EBA /t:E,10      Wähle eine Option ...oder automatisches Beenden nach 10 Sekunden! 


...hier wird nach 10 Sekunden zum Ende gesprungen


Grüsse Ralf
;))

Ähnliche Themen

JPG aus URL laden und speichern
waadde  18.02.2008 - 73 Hits - 1 Antwort

Order per Batchdatei kürzen
Bollerkohl  09.08.2008 - 4 Hits - 14 Antworten

Batchdatei für Installation
Shogun  11.03.2009 - 236 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026