
Ich versuche, alle Pfade loszuwerden, die das aktuelle Verzeichnis enthalten, also habe ich
my_command | sed "s/%CD%//ig"
in der Eingabeaufforderung, aber es funktionierte nicht - es kam alles genauso heraus wie vorher.
Wie würde ich es zum Laufen bringen?
Antwort1
Das Problem mit Ihrem Befehl besteht darin, dass die Backslashes als Escape-Zeichen und nicht als wörtliche Backslashes behandelt werden.
Sie können dies umgehen, indem Sie den maskierten Verzeichnisnamen in einer Hilfsvariablen speichern %dir%
:
for /f "tokens=*" %a in ('echo %cd%^| sed "s/\\/\\\\/g"') do set dir=%a
(Bei Verwendung in einer Batchdatei ersetzen Sie jedes %a
durch %%a
.)
sed
Sie können ab sofort wie gewohnt nutzen :
my_command | sed "s/%dir%//ig"