MS-DOS: '&' im Dateinamen

Hallo!
Ich hab hier ein Dosprogramm bei dem ich als Parameter einen Dateinamen übergeben muss. Diese Datei enthält ein „&“, was sich nicht ändern läßt. Wenn ich das ganze nun in DOS eintippe: prog -i test&versuch.bmp erhalte ich die Felermeldung 'Der Befehl „versuch.bmp“ ist entweder falsch geschrieben oder konnte nicht gefunden werden.". Ich vermute deshalb, dass er das & als eine Art Trennzeichen oder so interpretiert. Kann man es irgendwie maskieren?

Auch hallo.

Akzeptiert DOS diesen Befehl:

prog -i "test&versuch.bmp"

?

mfg M.L.

Hallo Toni

Ich hab hier ein Dosprogramm bei dem ich als Parameter einen
Dateinamen übergeben muss. Diese Datei enthält ein „&“, was
sich nicht ändern läßt.

Die Dateiverwaltung von DOS kennt das Sonderzeichen & nicht. Zudem akzeptiert das Programm vermutlich nur 8.3 Dateinamen. Wieso lässt sich das nicht ändern? Das wäre ganz neu.

der hinterwäldler

Hallo Toni
Die Dateiverwaltung von DOS kennt das Sonderzeichen &
nicht. Zudem akzeptiert das Programm vermutlich nur 8.3
Dateinamen. Wieso lässt sich das nicht ändern? Das wäre ganz
neu.

der hinterwäldler

Also es ließe sich schon ändern, aber ich brauche das & unbedingt im Dateinamen.

Hab ich schon probiert. Für DOS scheint es zu klappen, aber das Prog findet dann die Datei nicht.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi

Ich hab hier ein Dosprogramm bei dem ich als Parameter einen
Dateinamen übergeben muss. Diese Datei enthält ein „&“, was
sich nicht ändern läßt. Wenn ich das ganze nun in DOS
eintippe: prog -i test&versuch.bmp erhalte ich die
Felermeldung 'Der Befehl „versuch.bmp“ ist entweder falsch
geschrieben oder konnte nicht gefunden werden.". Ich vermute
deshalb, dass er das & als eine Art Trennzeichen oder so
interpretiert. Kann man es irgendwie maskieren?

zumindest in DOS 6 ist „&“ in Dateinamen erlaubt.
verboten sind nur + = : . , / \
eine Datei namens 06&07.dbf funzt bei mir problemlos
unter welcher Umgebung lässt du es laufen? kann sein, wie OPI vermutet, dass die alte Einschränkung 8 + 3 für die Länge des Namens greift
Gruss
ExNicki

zumindest in DOS 6 ist „&“ in Dateinamen erlaubt.
verboten sind nur + = : . , / \
eine Datei namens 06&07.dbf funzt bei mir problemlos
unter welcher Umgebung lässt du es laufen? kann sein, wie OPI
vermutet, dass die alte Einschränkung 8 + 3 für die Länge des
Namens greift
Gruss
ExNicki

Ich hab Windows XP und rufe das Programm über die Eingabeaufforderung auf.

Ich hab Windows XP und rufe das Programm über die
Eingabeaufforderung auf.

Hallo Toni (ExNicki?);

dein Problem liegt wohl nicht am ‚DOS‘ (du meinst wahrscheinlich die Shell cmd.exe, die unter WIndows aussieht wie das gute(?) alte (!!!) DOS), sondern daran, dass die Eingabeaufforderung das Zeichen ‚&‘ als Befehlstrenner interpretiert. Das Zeichen kommt beim aufgerufenen Programm also gar nicht an, sondern wird von der Shell vorher weggelesen. Abhilfe schafft da nur das ‚escapen‘ des Zeichen mit ‚^‘. Schau mal unter
http://www.windowsitpro.de/themen/hardware/article.h…
da ist das Ganze einigermassen uebersichtlich erklärt. Zitat:

_Der Einsatz des „escape“-Zeichens. Der Kommandointerpreter „cmd.exe“ nutzt das „Einschaltzeichen“ (^) als ein „escape“-Zeichen, um auf diese Weise die reguläre Bedeutung eines Zeichens zu übergehen. So wird beispielsweise das kaufmännische Pluszeichen („Ampersand“: &amp:wink: zum Trennen der Befehle verwendet. Wer dieses Zeichen einsetzt, kann auch mehrere Befehle in einer einzigen Befehlszeile verwenden. Soll das „und“-Zeichen jedoch ohne diese Interpretation verwendet werden, so ist der Einsatz des „escape“-Zeichens zwingend notwendig. So liefert der folgende Befehl keine Fehlermeldung:

echo Das ^& Zeichen wird als Befehlstrenner genutzt.

Wer diesen Aufruf an der Kommandozeile eingibt, wird die folgende Ausgabe zu sehen bekommen:

Das & Zeichen wird als Befehlstrenner genutzt.

Dieses Beispiel zeigt, dass es mit Hilfe des Einschaltzeichen „^“ möglich ist, die Interpretation der Zeichen „( )“, „“, „^“, „&“ und „|“ temporär auszuschalten._

Probiers mal aus.

gruss und viel Erfolg
bernhard

Lösung

Der Einsatz des „escape“-Zeichens. Der Kommandointerpreter
„cmd.exe“ nutzt das „Einschaltzeichen“ (^) als ein
„escape“-Zeichen, um auf diese Weise die reguläre Bedeutung
eines Zeichens zu übergehen. So wird beispielsweise das
kaufmännische Pluszeichen („Ampersand“: &amp:wink: zum Trennen der
Befehle verwendet. Wer dieses Zeichen einsetzt, kann auch
mehrere Befehle in einer einzigen Befehlszeile verwenden. Soll
das „und“-Zeichen jedoch ohne diese Interpretation verwendet
werden, so ist der Einsatz des „escape“-Zeichens zwingend
notwendig. So liefert der folgende Befehl keine Fehlermeldung:

echo Das ^& Zeichen wird als Befehlstrenner genutzt.

Wer diesen Aufruf an der Kommandozeile eingibt, wird die
folgende Ausgabe zu sehen bekommen:

Das & Zeichen wird als Befehlstrenner genutzt.

Dieses Beispiel zeigt, dass es mit Hilfe des Einschaltzeichen
„^“ möglich ist, die Interpretation der Zeichen „( )“, „“, „^“, „&“ und „|“ temporär auszuschalten.

Probiers mal aus.

gruss und viel Erfolg
bernhard

Super! Funktioniert. Genau sowas hab ich gesucht.

Vielen Dank!

sondern daran, dass die Eingabeaufforderung das Zeichen
‚&‘ als Befehlstrenner interpretiert. [snip]
Abhilfe schafft da nur das ‚escapen‘ des Zeichen mit ‚^‘.

Was zur Hoelle rauchen die da in Redmond eigentlich? Ein & als Befehlstrenner, ein ^ zum escapen… ja klar, \ war ja schon weg. Das kommt davon, wenn man einmal Mist anfaengt, dann ist man irgendwann gezwungen, weiter rumzufrickeln. Jede shell, die mir bislang ueber die Fuesse gelaufen ist, hat da einigermassen aehnliche Standards, denen man die Kollaboration mit einigen Programmiersprachen deutlich ansieht. Aber nein, MS muss da ja wieder seinen eigenen Standard erfinden… Mir wird aber langsam auch klar, warum die nie was sinnvolles mit regulaeren Ausdruecken auf die Beine stellen konnten.

Gruss vom Frank.