
現在のディレクトリを含むすべてのパスを削除しようとしているので、
my_command | sed "s/%CD%//ig"
コマンドプロンプトで実行しましたが、うまくいきませんでした。すべて以前と同じように表示されました。
どうすれば機能するのでしょうか?
答え1
コマンドの問題は、バックスラッシュがリテラルのバックスラッシュではなく、エスケープ文字として扱われることです。
エスケープされたディレクトリ名を補助変数に格納することで、これを克服できます%dir%
。
for /f "tokens=*" %a in ('echo %cd%^| sed "s/\\/\\\\/g"') do set dir=%a
(バッチファイルで使用する場合は、すべて%a
を に置き換えます%%a
。)
sed
今は通常通りご利用いただけます:
my_command | sed "s/%dir%//ig"