custos
Goto Top

Mit Tastatureingabe Variable (DOS) setzen

Hallo allerseits,

ich hab das kleine Problem, daß ich den Inhalt einer Variablen via Tastatur während der Laufzeit der Batch festlegen muß. Da das ganze nicht unter Windows, sondern unter DOS laufen muß kann ich hier "Set /p" nicht benutzen. Ich habe auch schon einige Tools versucht, die ich gefunden habe (input.exe, input.com, nset.com...) aber keines von denen hat so wirklich funktioniert...

Hat da jemand zufällig etwas das läuft bzw. weiß jemand man sowas herkriegt?

MfG

piffer

Content-Key: 22493

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

Printed on: April 23, 2024 at 21:04 o'clock

Member: filippg
filippg Dec 30, 2005 at 14:22:49 (UTC)
Goto Top
Hallo,

ich habe da früher mal mit einer antwort.com rumgemacht, die nimmt aber jeweils nur ein Zeichen entgegen.

Kannst du dir selbst mit "debug" basteln:

-a 100
1556:0100 mov ah,8
1556:0102 int 21
1556:0104 cmp al,0
1556:0106 jnz 10a
1556:0108 int 21
1556:010A mov ah,4c
1556:010C int 21
1556:010E
-u 100 10d
1556:0100 B408 MOV AH,08
1556:0102 CD21 INT 21
1556:0104 3C00 CMP AL,00
1556:0106 7502 JNZ 010A
1556:0108 CD21 INT 21
1556:010A B44C MOV AH,4C
1556:010C CD21 INT 21
-r cx
CX 0000
:e
-n antwort.com
-w
0000E Bytes werden geschrieben.
-q

wobei hier jetzt die einzugebenden Befhle mit den Ausgaben vermischt sind... du gibst jeweils alle mit "-" beginneden Zeilen ein, sowie die Assemblerbefehle im oberen Block. Die ersten 4 Ziffern sind jeweils egal (1556), die anderen sollten gleich sein.
Der Code der gedrückten Taste liegt anschliessend in der Umgebungsvarialbe errorlevel.

Verwendung z.B.:

if errorlevel 60 echo "F2 wurde gedrückt"

Die Tastencode findest du in jeder ASCII-Tabelle (oder?) entnehmen oder ausprobieren. Bei if-Abfragen immer den höchsten Wert zuerst abfragen.


Wobei... mir fällt gerade auf: um ganze Wörter einzugeben ist das wahrscheinlich etwas kompliziert.

Filipp
Member: Custos
Custos Dec 30, 2005 at 19:24:33 (UTC)
Goto Top
Geht um die Eingabe einer mehrstelligen Zahl (hätte ich vllt auch erwähnen sollen). Die Zahl wäre ~3-5-stellig. Wäre wohl mit einzelnen Zeichen und Abfrage des errorlevel machbar, aber leider wirklich etwas umständlich. Hatte es mir da etwas einfacher vorgestellt - so in etwas Link anklicken, Prog downloaden und in die Batch einbinden face-wink

Naja, falls sich nichts anderes findet... könnte man das Ding evtl. zu dem umbauen was ich brauche? (hab nicht soviel Ahnung von Assembler - eigentlich garkeine face-confused )
Member: Biber
Biber Dec 30, 2005 at 22:56:57 (UTC)
Goto Top
Moin piffer,

für welche DOS-Version sucht Du denn dieses Tool?
Und was klappte denn nicht an den bisherigen?

Gruß Biber
Member: Custos
Custos Jan 02, 2006 at 06:28:43 (UTC)
Goto Top
Hallo,

also hab mir einfach unter XP ne DOS-Startdiskette erstellt (V6?).

Es sollte nach Ausführung dieser Tools der eingegebene Text/Zahl in einer (je nach Tool) bestimmten bzw. wählbaren Umgebungsvariable liegen. Nur leider wurden diese Variablen einfach nicht angelegt...

MfG

piffer
Member: Biber
Biber Jan 02, 2006 at 21:19:00 (UTC)
Goto Top
Hmm, bin jetzt etwas verblüfft...

Wenn Du aus XP (Home? Prof?) eine Dos-Diskette erstellst, ist nicht die Cmd.exe, sondern die Command.com der Befehlsinterpreter?? Sonst würde ja der "Set /P" zur Verfügung stehen. Ist mir vollkommen neu - hab ich allerdings auch noch nie probiert.

Willst Du denn die "DOS"-Diskette auch an Nicht-Windows-Rechnern laufen lassen? Oder nur wieder an XP-Rechnern? Was sollen die Batche denn leisten, die auf dieser DOS-Diskette sind (müssen die lange Dateinamen verarbeiten können, NTFS lesen können, mit Partitionen größer 32 MByte oder mit Partionen > 4 GByte)?.

Oder ist das Hauptfeature das Booten-ohne-Windows-GUI?

Ein bisschen verwirrt
Biber
Member: Custos
Custos Jan 04, 2006 at 06:13:29 (UTC)
Goto Top
So also:

...XP (Home? Prof?)...
- Prof

...nicht die Cmd.exe, sondern die Command.com der Befehlsinterpreter...
- sieht so aus face-wink konnte deshalb leider bei if auch nicht "if %groesse% lss 0" und sowas machen. Mußte ich mit dem Tool "ifnumber" lösen... is leider so...

Was sollen die Batche denn leisten, die auf dieser DOS-Diskette sind...?
- Die Batch soll eigentlich nur zur Partitionierung von Rechnern eingesetzt werden. Es sind darin zwar schon Standardgrößen für die Partitionen hinterlegt, aber es kommt ab und an vor, daß man von diesen Größen abweichen möchte bzw. muß. Daher wäre es nicht schlecht, wenn man an dieser Stelle selbst einen Wert definieren könnte ohne die Batch selbst zu verändern...

MfG

piffer
Member: Biber
Biber Jan 04, 2006 at 23:46:13 (UTC)
Goto Top
Also, piffer,
irgendwelche Freeware-Utilities a la Input.exe oder GetInput.ece bis hin zu BatEnhancer-Paketen gibt es im Internet. Wenn Du da noch mal suchen willst...
Als absolute Behelfskrücke mit Bordmitteln kann ich Dir noch was anbieten, dass ich früher mal zur Passwort-Abfrage am Prompt verwendet habe.
Hat (naturgemäß) den Nachteil, dass die eingegebenen Werte NICHT angezeigt werden.
Wenn es nur für Deinen Privat-Partitionierungsbätch ist und nicht DAU-sicher sein muss... besser als gar nichts.

Du kannst (wie geschrieben, als Behelfslösung/McGuywer-Variante) folgende Mimik in den Batch einbauen:

::----DeinBatch.bat
@echo off
Set zahl1=
format/f:160 a: >%temp%\#zahl#
for /f "tokens=6" %a in ('find "EINGABETASTE" %temp%\#zahl#') do Set Zahl1=%%a
Echo Eingegeben Zahl ist %zahl1%. Wenn falsch, Steuerung-C drücken
Pause
Set zahl2=
format/f:160 a: >%temp%\#zahl#
for /f "tokens=6" %a in ('find "EINGABETASTE" %temp%\#zahl#') do Set Zahl2=%%a
Echo Eingegeben Zahl ist %zahl2%. Wenn falsch, Steuerung-C drücken
Pause


:: etc...
~~~~~~~~~~
Du musst allerdings die Find.exe mit auf Diskette kopieren.

Vorher würde ich allerdings noch mal probieren, ob sich nicht die CMD.EXE als Command-Interpreter definieren lässt auf der DOS-Diskette.
Einfach mit auf die Diskette kopieren und eingeben:
Set Comspec=A:\CMD.EXE

Dann sollte auch der "Set /P"-Befehl funktionieren.

(Hab ich aber auch nie probiert *zugeb)

Viel Glück und poste mal Dein Ergebnis bitte
Biber