3

Я пытаюсь избавиться от всех путей, которые включают в себя текущий каталог, поэтому я сделал

my_command | sed "s/%CD%//ig"

в командной строке, но это не сработало - все вышло так же, как и раньше.

Как бы я заставить это работать?

1 ответ1

5

Проблема с вашей командой в том, что обратные слэши обрабатываются как escape-символы, а не буквальные.

Вы можете преодолеть это, сохранив имя экранированного каталога во вспомогательной переменной %dir%:

for /f "tokens=*" %a in ('echo %cd%^| sed "s/\\/\\\\/g"') do set dir=%a

(Если используется в пакетном файле, замените каждый %a на %%a .)

Теперь вы можете использовать sed как обычно:

my_command | sed "s/%dir%//ig"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .