Estou executando o PowerShell em um arquivo em lotes para substituir caracteres e estou preso tentando substituir instâncias \"
de "
.
\
por si só pode ser escapado fazendo\\
"
por si só pode ser escapado fazendo""""
Eles funcionam, mas se houver uma barra invertida ao lado de aspas duplas, isso não funcionará:\\""""
É possível fazer isso, ainda usando o PowerShell em um arquivo em lotes?
Como o
-Replace
operador funciona combinando padrões regex, você pode usar o[ ]
colchete e colocar os caracteres de escape em dois conjuntos separados para que o valor seja escapado e substituído, ou seja,'[\\][""]'
.Você pode usar
'""""'
para os caracteres de substituição de aspas duplas simples dos dois a serem substituídos. Então é basicamente assim:(Get-Content $_) -replace '[\\][""]', '""""'
.Por favor, note que
-replace '[\\][""]', '""""'
supõe que você deseja substituir\"
por apenas,"
mas você pode alterá-lo-replace '[\\][""]', '#'
para substituir\"
assim#
, se necessário, por exemplo.Trabalhando a sintaxe de linha de comando completa
Detalhes da solução de problemas...
Eu usei esta sintaxe para um único arquivo para iniciar
Uma vez que terminei nesse nível, passei para o comando completo e o executei em um único arquivo ainda e continuei verificando-o a cada execução até descobrir o que era necessário para obter o resultado final desejado.
Recurso de Apoio
Sobre operadores de comparação