1 (изменено: mljaaa, 2014-01-31 03:51:45)

Тема: CMD/BAT Замена найденой в *.txt строки

Снова требуется помощь опытных форумчан
Дело в таком вот коде:

@echo on
setlocal EnableDelayedExpansion
For /F "Delims=" %%I In ('find """restore_on_startup"": " 5.txt') Do (
Set v='%%~I')
set context=%v%
set replace=      "restore_on_startup": 4,
copy nul 5.out

:: Тут начинаются проблемы
for /F "delims=" %%s in (5.txt) do (
set string=%%s

:: Или тута
set result=!string:%context%=%replace%!

echo.!result!>>5.out)
echo.%replace%
echo.%context%
echo.%result%
move 5.out 5.txt
endlocal
pause

Данный скрипт должен через поиск брать из файла строку, содержащую определённую фразу и вставлять вместо неё заранее подготовленную.
Оригинал скрипта работает хорошо, особенно, со статичными данными. Пример:

setlocal EnableDelayedExpansion
set context=      "restore_on_startup": 8,
set replace=      "restore_on_startup": 4,
copy nul 5.out
for /F "delims=" %%s in (5.txt) do (
 set string=%%s
 set string=!string:%context%=%replace%!
 echo.!string!>>5.out
)
move 5.out 5.txt
pause

Может у кого есть мысли как заставить скрипт работать?

+ Доп. материалы

http://www.cyberforum.ru/cmd-bat/thread913333.html - Похожая беда
http://ss64.com/nt/syntax-replace.html - Документация по  set d=%c:b=a%
http://forum.script-coding.com/viewtopic.php?id=7443 - чуть менее похожая тема

+ Файл 5.txt

Файл 5.txt

"session": {
      "restore_on_startup": 5,
      "restore_on_startup_migrated": true,
      "startup_migration_time": "13035403453516971"
   },
С уважением <*>

2 (изменено: Yury, 2014-01-31 18:16:31)

Re: CMD/BAT Замена найденой в *.txt строки

Для Вашего случая можно так (не обобщая и сохраняя Ваш синтаксис):

@echo on
copy nul 5.out>nul
set replace=      "restore_on_startup": 4,
for /f "delims=" %%I In (5.txt) do ((
 echo.%%I|>nul find """restore_on_startup"": "&&echo.%replace%||echo.%%I
)>>5.out)
move 5.out 5.txt>nul
pause>nul

3

Re: CMD/BAT Замена найденой в *.txt строки

JSON в txt, чтобы после заменить строку - однако! Может и парсить тогда на js, чтобы не было головной боли?