Substituir caminho no Windows por sed?

Substituir caminho no Windows por sed?

Estou tentando me livrar de todos os caminhos que incluem o diretório atual, então fiz

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

no prompt de comando, mas não funcionou - tudo saiu como antes.

Como eu faria isso funcionar?

Responder1

O problema com o seu comando é que as barras invertidas são tratadas como caracteres de escape, e não como barras invertidas literais.

Você pode superar isso armazenando o nome do diretório com escape em uma variável auxiliar %dir%:

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

(Se usado em um arquivo em lote, substitua each %apor %%a.)

Você pode usar sednormalmente agora:

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

informação relacionada