KapralBel Так заменять я и в Word-е смогу ;) Сделать такое без 3rd party tools нереально - уточняю свое предыдущее заявление..
Добавлено: Цитата: @ECHO OFF
SET MY_STRING=Yesss...!
SET MY_STRING=%MY_STRING:!=^^^^^!%
ECHO %MY_STRING%
PAUSE
Супер! А теперь попробуйте засунуть это вовнутрь цикла в котором, кроме всего прочего надо ещё чего нибудь присваивать.
Вот последний, очень извратный вариант скрипта для этого. Работает, НО! только с мелкими (5-10 строк) файлами.
Код: @echo off
setlocal
rem Создаем файл для примера, и пытаемся заменить в нем все знаки "!" на "^!"
if exist problem.txt goto :SkipCreate
echo Hello, World!>problem.txt
echo Ahtung!!! Eine, Zwai. Drai...>>problem.txt
echo "It's very interesting!">>problem.txt
echo My password="Ready for battle!">>problem.txt
echo [HKEY_CURRENT_USER\Software\RIT\The Bat!]>>problem.txt
echo "LNK_ST"="E:\\USERS\\Ivanov\\SendTo\\The Bat!.LNK">>problem.txt
:SkipCreate
for /f "tokens=* delims=" %%a in (problem.txt) do (
set tempstr=%%a
setlocal ENABLEDELAYEDEXPANSION
call :SetEsc !tempstr!
setlocal DISABLEDELAYEDEXPANSION
)
endlocal
goto :EOF
:SetEsc
setlocal DISABLEDELAYEDEXPANSION
set mark=
set tmpstr=%*
set mark=%tmpstr:*!=%
if not defined mark set mark=0
set mark=%mark:~0,1%
set mark=%mark:"=*%
if %mark%.==*. (set mark=1) else set mark=
if defined mark (
set tmpstr=%*
set result=%tmpstr:!=^!%
) else (
set tmpstr="%*"
set result=%tmpstr:!=^^^^!%
)
echo %result%>>noproblem.txt
setlocal ENABLEDELAYEDEXPANSION
goto :EOF