Estoy intentando reescribir un archivo de configuración usando un archivo por lotes de Windows. Estoy recorriendo las líneas del archivo y buscando la línea que quiero reemplazar con una nueva línea especificada.Eco de cadena con comillas dobles en el archivo de salida usando el lote de Windows
que tienen una 'función' que escribe la línea en el fichero de
:AddText %1 %2
set Text=%~1%
set NewLine=%~2%
echo "%Text%" | findstr /C:"%markerstr%" 1>nul
if errorlevel 1 (
if not "%Text%" == "" (
setlocal EnableDelayedExpansion
(
echo !Text!
) >> outfile.txt
) else (
echo. >> outfile.txt
)
) else (
set NewLine=%NewLine"=%
setlocal EnableDelayedExpansion
(
echo !NewLine!
) >> outfile.txt
)
exit /b
El problema es cuando% Texto% es una cadena con comillas dobles incrustadas. Luego falla. Posiblemente haya otros personajes que causarían que también fallara. ¿Cómo puedo obtener esto para poder trabajar con todo el texto encontrado en el archivo de configuración?
Si quieres que funcione de forma fiable , no use lotes - use powershell o vbscript u otro lenguaje de scripting. –
Eso sería genial, pero realmente no tengo eso como una opción. –
En realidad, el problema parece ser qué comillas dobles incrustadas en el eco aquí: echo% Text% | findstr/C: "% markerstr%" 1> nul –