Fehler in DOSBox bat-Dateien (prompt)

Typ

Ensign
Registriert
Dez. 2023
Beiträge
156
Hallo zusammen,

ich habe vor vielen Jahren einmal mit Batch-Dateien selbst ein "Programm" (eine Bildergeschichte) erstellt, dieses würde ich gerne in der DOSBox mal wieder anschauen. Leider erhalte ich immer einen Fehler:
ungültiger Befehl: prompt

Dieses "prompt" habe ich damals sehr oft benutzt, scheinbar stimmt aber in der DOSBox die Version oder Einstellung nicht. Wie kann ich die DOSBox einstellen, damit ich eine Batch-Datei ausführen kann, die in einer Zeile nur den Befehl "prompt" hat?

Würde mich freuen, wenn ich das zum Laufen kriege, danke!
 
Was soll der Prompt-Befehl denn überhaupt erreichen?

Das macht prompt:
1708711737522.png



"die in einer Zeile nur den Befehl "prompt" hat" -> heißt das, die Datei besteht ausschließlich aus dieser Zeile?

prompt ohne Parameter setzt es auf den Standard zurück ($P$G unter DOS).
 
Es wurde ein Bild angezeigt und darunter stand dann ein Text, und in der bat-Datei steht dann in der Zeile teils wirklich nur "prompt". Damit kommt die DOSBox dann nicht klar. Sie sagt ja auch die genannte Fehlermeldung.
Ergänzung ()

Beispiel einer bat-Datei wäre:

echo off
prompt $p$g
cls
prompt Seitenzahl eingeben:

Was außerdem leider nicht geht sind Umlaute, in der bat-Textanzeige und auch in den Dateinamen, da schaue ich aber nochmal genauer.
 
Ich weis nicht ob es in der DosBox funktioniert, aber setzte den Text mit Umlauten in Anführungszeichen. Also "Türe" statt Türe.
 
Dann war das schon damals unsauber und schlecht programmiert. Wie oben gesagt, das erste
Code:
prompt $p$g
setzt nur Laufwerk + Verzeichnis hinter dem Prompt: z.B, C:\Programme, dann wird mit cls der Bildschirm komplett gelöscht (wo man sich das erste promt hätte sparen können), und erneut der Prompt als echo mißbraucht,
Code:
prompt Seitenzahl eingeben:
nur um einen Text auszugeben, wo vermutlich dann irgendwas mit SET oder anderem folgt, um eine Eingabe vorzunehmen.

Daher, hier mal mit ChatCPT refactoren, bzw. umschreiben und modernisieren.
Ergänzung ()

Typ schrieb:
dieses würde ich gerne in der DOSBox mal wieder anschauen.
Welche DOSBox Version verwendest Du dann genau? Hier einfach mal prüfen, ob alle Befehle vorhanden sind, indem Du einfach mal prompt direkt aufrufst, es sollte meiner Erinnerung nach ein Inline-Kommando vom MSDOS.SYS bzw. COMMAND.COM sein, sprich, der Befehl ist da fest eingebaut, den siehst Du nicht im Pfad.
 
Zuletzt bearbeitet:
Für das Umlautproblem mit "chcp 1252" die Zeichentabelle der Dosbox umstellen.
Das Problem mit dem "prompt" kann ich nicht nachstellen, der Codeschnipsel von dir funktioniert bei mir.


Die Ausgabe von prompt /? sagt:

Ändert die Eingabeaufforderung (cmd.exe).

PROMPT [Text]

Text Gibt eine neue Eingabeaufforderung an.

Sie kann aus normalen Zeichen und folgenden Sonderzeichen bestehen:

$A & (kaufmännisches Und)
$B | (senkrechter Strich)
$C ( (öffnende Klammer)
$D aktuelles Datum
$E Escapezeichen (ASCII-Code 27)
$F ) (schließende Klammer)
$G > (Größer-als-Zeichen)
$H Rückschritt (löscht das vorangehende Zeichen)
$L < (Kleiner-als-Zeichen)
$N aktuelles Laufwerk
$P aktuelles Laufwerk und Pfad
$Q = (Gleichheitszeichen)
$S (Leerzeichen)
$T aktuelle Zeit
$V Windows-Versionsnummer
$_ Wagenrücklauf und Zeilenvorschub
$$ $ (Dollarzeichen)

Wenn die Befehlserweiterungen aktiviert sind, unterstützt der PROMPT-Befehl
die folgenden zusätzlichen Formatierungszeichen:

$+ Keine oder mehr Pluszeichen (+), abhängig von der Anzahl der
gespeicherten PUSHD-Verzeichnisse, wobei ein Zeichen pro Ebene
ausgegeben wird.

$M Zeigt den Remotenamen, der dem aktuellen Laufwerkbuchstaben zugeordnet
ist, an oder nichts, wenn es sich bei dem aktuellen Laufwerkbuchstaben
um kein Netzlaufwerk handelt.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: nutrix
Vielen Dank für eure weiteren Antworten. Ich denke, es wird klar, dass ich natürlich nicht programmieren kann, sondern dies Mitte der 90er Jahre als Kind selbst in Batch-Dateien gestaltet habe, wie gesagt für eine Bildergeschichte. Ich hatte damals aus bmp-Dateien dann exe-Dateien generiert (mit einem Tool vermutlich) und einfach in Batch-Dateien diese Bilder aufgerufen. Dazwischen gab es dann immer Text (auch in der Batch-Datei, eben nach einem prompt meistens), und der "User" konnte in dem Verzeichnis in DOS "Befehle" eingeben, das heißt, weitere Batch-Datein öffnen. Nach dem Beispiel oben also kam kein Code, sondern der User hat in c:\ eine Seitenzahl eingegeben, und diese war auch eine Batch-Datei, also z.B. 19 eingegeben und ENTER = Batch-Datei 19.bat aufgerufen :).

War eben so :).

Mir geht es also nicht um die Korrekturen des Codes, sondern darum, wie ich die fehlerhaften Befehle verstehen kann und in der DOS-Box eine Umgebung herstellen kann, wo "prompt" und Umlaute erlaubt sind.

Oben stand ja nun von dir, ampere, der Tipp mit der Zeichentabelle, das kann ich gerne versuchen (wenn ich es finde?). Vielleicht kannst du mir auch noch schreiben, welche DOS-Einstellungen du in der DOSBox hast. Ich verwende D-Fend Reloaded. Dadurch konnte ich vorhin immerhin zum ersten Mal seit 30 Jahren das Programm öffnen und einzelne Seiten anschauen.
 
Klar, eine DosBox aufmachen und "chcp 1252" eingeben.
Du kannst dir eine Verknüpfung auf dem Desktop anlegen mit folgendem Befehl.
Code:
C:\Windows\System32\cmd.exe /K CHCP 1252 >NUL
Kann man bestimmt auch irgendwo komfortabel in einem Menü umstellen aber so geht am einfachsten.

zum Thema deiner Bildergeschichte kann ich dir nur raten jeden einzelnen Befehl zu prüfen und den Abhängigkeiten nachzugehen diese dann auch zu überprüfen.

Die meisten Befehle unter Dos haben eine Hilfe die kannst du mit -? oder /? abrufen.
 
ggf. könnte man alle "prompt" einfach mit "echo" ersetzen.
Einmal in Notepad++ "Ersetzen in Dateien" und gut ist.

In der Win 10 cmd ist "prompt" ebenfalls verfügbar (bei mir zumindest.) Daher schon etwas seltsam.
Unter CMD oder Powershell direkt funktioniert das Programm auch nicht?

Aber eigentlich schreibe ich ja nur, weil ich darüber schmunzeln muss, dass hier auf eine Frage von "Typ" eine Antwort durch "tollertyp" kommt.
 
  • Gefällt mir
Reaktionen: tollertyp
Danke, kann ich das CHCP in die erste aufgerufene Batch-Datei einfügen :) ?
Bezüglich der anderen Befehle klappt zum Glück ja alles, und damals im DOS war natürlich auch alles fehlerfrei, so viel QM hab ich schon gemacht... Daher war eben mein Gedanke, dass es an der Einstellung in DOSBox liegen muss. Die Fehler sind ja auch immer die gleichen, also immer nur der eingangs genannte mit "prompt". Ich habe das prompt wohl sehr gerne genutzt, weil man dadurch einen Text anzeigen lassen konnte und der User dann seine "Eingabe" machen, ohne dass es zu uncool aussah. Man konnte übrigens nicht nur Seiten auswählen, sondern auch Begriffe eingeben, die auf den Bildern aufgeführt waren, also ein interaktives Buch.
Ergänzung ()

Simpsonfan: nein, ich habe es in den letzten Jahren immer mal wieder in CMD/Powershell versucht, da ging gar nichts. Nur jetzt in der DOSBox endlich. Aber auch danke für den Tipp, werde alles mal bald versuchen, bin jetzt gerade nicht an dem PC.
 
Ja du kannst "chcp 1252" auch nach "echo off" an den Anfang deiner Batch Datei setzen.
Kann aber sein das es nicht richtig funktioniert, zumindest hat es das bei mir gerade nicht.
 
Also ich denke, ich muss nochmal ein bisschen genauer nachschauen. chcp wird auch als ungültiger Befehl gemeldet. Ich werde vielleicht nochmal eine neue DOSBox nutzen. Meine Hoffnung war, dass das mit dem prompt-Befehl aufgrund einer bestimmten DOS-Konfiguration nicht geht, die aber damals noch erlaubt war. Das mit den Umlauten ist dann eigentlich erst danach dran. Ich schaue mal und melde mich dann wieder!
 
Hallo nochmals,

ich erinnere mich inzwischen, dass ich "prompt" einfach deswegen verwendet habe, damit der User eben nicht immer das Verzeichnis und Unterverzeichnis angezeigt bekommt, sondern es wurde dann nur der Text angezeigt wie "Seitenzahl eingeben" und dann der blinkende Cursor. Wenn ich nun in der DOSBox mein Programm verwende, wird immer das Verzeichnis angezeigt, eben weil "prompt" nicht mehr so gelesen wird wie damals.

Ich habe mal einige Dateien von "prompt" zu "echo" geändert. Nun kommt zwar keine Fehlermeldung mehr, aber eben dann doch immer das Verzeichnis, c:\etc. Außerdem geht auch weiterhin nicht die Eingabe von chcp, weil dies ein ungültiger Befehl sei. Und zu guter letzt werden auch in der dir-Übersicht die Dateien mit Umlauten falsch angezeigt. Die Texte selbst, die als Buchstaben erscheinen im Programm sind korrekt, weil ich diese damals schon vorsorglich so eingegeben hatte, dass es stimmt (also z.B. ein ä als ,, eingegeben in der bat-Datei).

Ich habe auch mal die DOSBox direkt gestartet aus D-Fend, also nicht als Spiel das alles, und aus dem Verzeichnisbaum mein Programm aufgerufen, und dann ist es das gleiche.

Ich müsste einfach eine andere DOS-Version nutzen wie damals, leider weiß ich natürlich zu wenig darüber. Es gibt beim Start in D-Fend noch die Möglichkeit, eine conf-Datei zu ändern, dort könnte ich Vorgaben machen.

Alles in allem will ich also das DOS einstellen, dass mein Programm mit prompt funktioniert. Wenn dieser Befehl und seine Funktion in einer bestimmten DOS-Version oder DOSBox-Version etwas sagt, nehme ich gerne noch Tipps auf, sonst muss ich eben einzelnen Seiten direkt aufrufen.
 
Typ schrieb:
Und zu guter letzt werden auch in der dir-Übersicht die Dateien mit Umlauten falsch angezeigt. Die Texte selbst, die als Buchstaben erscheinen im Programm sind korrekt, weil ich diese damals schon vorsorglich so eingegeben hatte, dass es stimmt (also z.B. ein ä als ,, eingegeben in der bat-Datei).
Dazu hat jemand schon was geschrieben bzgl. unterschiedlicher Codepages, die Du hier einstellen mußt.
 
Ja, aber der Befehl ist ja auch ungültig bei mir in der DOSBox.
Ich habe nu nmal ganz frisch eine DOSBox heruntergeladen (0.74-3).
Wenn ich dort nun ein Verzeichnis mounte, und darin die folgende Datei 2.bat starte, dann erhalte ich den Fehler zu "illegal" oder "ungültig", was den Befehl "prompt" angeht.
Ebenso erhalte ich diese Fehlermeldung, wenn ich "chcp" eingebe.

echo off
prompt $p$g
cls
prompt Seitenzahl eingeben:
 
Okay jetzt verstehe ich erst einmal was du meinst. :D Du meinst das Tool DOSBox.
Ich habe die ganze Zeit von der Eingabeaufforderung von Windows geredet.
Verwendest du DOSBox unter Windows oder einem anderen Betriebssystem?
 
Ja, Windows-Version der DOSBox, wie man sie bei Chip herunterladen kann.
 
Okay! :D Das war wohl dann ein Missverständnis.
Führe doch deine Datei einfach in der Eingabeaufforderung aus.
Die DOSBox kennt den Befehl "prompt" nicht da es die DOS Version 5.0 emuliert.
 
  • Gefällt mir
Reaktionen: simpsonsfan
Es scheint, du bräuchtest ein DOS6.22 (MS-DOS 6.22).
Könnte man grundsätzlich in der DOSbox installieren, siehe Anleitung hier. Aber leider steht da auch
There are a few things you’ll need in order to install a DOS OS in DOSBox. All of these can be freely downloaded from the internet, except for MS-DOS, which you’ll need to have your floppy disk images handy for. You’ll need:

A copy of DOSBox
A copy of bximage from Bochs.
Floppy disk images of your DOS installation diskettes.
D.h, du müsstest mal suchen, ob sich irgendwo ein DOS6.22 findet. Ab (oder in) DOS6.22 gibt es nämlich zumindest sowohl prompt als auch chcp. Siehe hier.

Edit: OK, und DOS5.0 hat das also halt noch nicht. Aber Eingabeaufforderung direkt scheint ja nicht geklappt zu haben. @Typ was war denn dort genau die Fehlermeldung?
 
  • Gefällt mir
Reaktionen: ampere
Der einfachste Weg wäre glaube eine keine VM in der DOS 6.22 läuft oder so.
 
Zurück
Oben