Te sugiero que pruebes este bat que integra una rutinilla en Powershell para intentar evitar los problemas de los caracteres especiales de la shell MSDOS:
@echo off
if "%3" == "" goto ayuda
del kkk.txt
set cadorig=%~1
set cadsust=%~2
for /f "tokens=* delims=" %%i in (%3) do call :tratar "%%i"
goto :fin
:Tratar
@PowerShell ^
$linea = '%~1'; ^
$linea. Replace("'%cadorig%'","'%cadsust%'") ^| Out-File kkk.txt -Append -Encoding ASCII
%End PowerShell%
goto :eof
:Ayuda
Echo Reemplaza una cadena por otra en todo el contenido de un archivo
echo Formato: %0 cadorig cadsust archivo
echo Si las cadenas contienen espacios deben escribirse entrecomilladas
echo El archivo corregido se deja en kkk.txt
echo Ejemplo:
echo %0 de DE kk.txt
:Fin
Ya me contarás si te sirve. Y si sigues teniendo problemas pásame un ejemplo concreto para trabajar sobre él.