
Я пытаюсь избавиться от всех путей, включающих текущий каталог, поэтому я сделал следующее:
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"