У меня есть командный файл, который я использую для поиска фрагмента текста и замены его другим. Это работает, но происходит то, что при создании «нового» файла все, что после восклицательного знака, удаляется.
Итак, оригинальный файл
Hello! I have some cheese
Просто становится
Hello
Хотя текст, который я пытаюсь заменить, в порядке.
Я понимаю, что, поскольку я использую отложенное расширение, мне нужно каким-то образом экранировать восклицательные знаки с помощью ^^!
, но я не могу понять, где это сделать. Добавление его в эхо просто повторяет буквально ^^!
.
Любая помощь будет оценена.
set "rootname=Common Filename"
set "replace="old">"
set "replaced="new">"
set "source="%rootname%_unqiue_suffix.txt""
set "target=Fixed\%SOURCE%"
setlocal enableDelayedExpansion
(
for /F "tokens=1* delims=:" %%a in ('findstr /N "^" %source%') do (
set "line=%%b"
if defined line set "line=!line:%replace%=%replaced%!"
echo(!line!
)
) > %target%
endlocal