Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Sonderzeichen & in SET (Kommandozeilen-Befehl)

Mdl / 3 Antworten / Baumansicht Nickles

Nach einem seltsamen Fehlverhalten in einem meiner .bat-Dateien konnte ich dieses auf ein ungewünschtes Verhalten des SET-Befehls zurückführen.

Sobald das Argument (Filenamen) ein (gültiges) Sonderzeichen '&' enthielt, meckerte SET, z.B. bei

  SET filename=a&b.txt

Prinzipiell könnte man daran denken, dies mit "" zu umgehen, wie z.B.

    SET filename="a&b.txt"

aber das würde alle nachfolgenden Zeilen/Aufrufe beeinflussen und evtl. andere Probleme verursachen.

Gibt es vielleicht doch eine Möglichkeit, dass ein SET-Wert ein '&' beinhaltet?
  Vielleicht eine (von mir nicht gefundene) Option oder einen Escape-Character?
Gibt es vielleicht noch andere solche nicht-nutzbaren Zeichen?

Oder muss ich doch mit dem "" experimentieren?

Gruß & Danke,
Mdl

bei Antwort benachrichtigen
mi~we Mdl „Sonderzeichen & in SET (Kommandozeilen-Befehl)“
Optionen
einen Escape-Character?

Mit dem ^ kann man einzelne Zeichen "escapen", also

SET filename=a^&b.txt

sollte es tun.

"Es wäre dumm, sich über die Welt zu ärgern. Sie kümmert sich nicht darum." (Marc Aurel)
bei Antwort benachrichtigen
Mdl mi~we „Mit dem kann man einzelne Zeichen escapen , also SET filename a b.txt sollte es tun.“
Optionen

Danke mi~we,

cool!

Mal schauen, wie leicht sich dieses Wissen jetzt verwenden lässt.
Der (Batch-)Anwender soll ja schließlich nicht gezwungen sein, diese Esc-Chars verwenden zu müssen...

bei Antwort benachrichtigen
mi~we Mdl „Danke mi we, cool! Mal schauen, wie leicht sich dieses Wissen jetzt verwenden lässt. Der Batch- Anwender soll ja ...“
Optionen

Es ist halt in der Eingabeaufforderung immer blöd, wenn Datei- oder Ordnernamen Zeichen enthalten, die für die cmd.exe eine Sonderbedeutung haben.

&: Use to separate multiple commands on one command line. Cmd.exe runs the first command, and then the second command.

Da muss man dann notgedrungen mal "...." oder ein ^ setzen.

"Es wäre dumm, sich über die Welt zu ärgern. Sie kümmert sich nicht darum." (Marc Aurel)
bei Antwort benachrichtigen