PDA

Показать полную графическую версию : [решено] заменить с помощью bat'ника одну строку на другую


warkdimka
17-02-2016, 15:39
Всем привет! знаю тема старая и изъезженная, но все же: нужно заменить с помощью bat'ника одну строку на другую - <Directories Name="UnitOutputDir">output</Directories> на <Directories Name="UnitOutputDir"></Directories>

использую такие команды:
Set infile=%~dp01.cfg
Set find=output<
Set replace=" "

setlocal enabledelayedexpansion
for /F "tokens=* delims=," %%n in (!infile!) do (
set LINE=%%n
set TMPR=!LINE:%find%=%replace%!
Echo !TMPR!>>%~dp0time.cfg
)
move %~dp0time.cfg %infile%

Теперь суть проблемы - bat'ник распознает символ "<" в строке Set find=output< не просто как текст кусочка строки, а как часть кода. Сделать просто Set find=output не получится т.к. в файле еще несколько раз встречается слово output.

greg zakharov
17-02-2016, 17:29
@echo off
setlocal enabledelayedexpansion
set "f=1.cfg"
>tmp.cfg (for /f "tokens=*" %%i in (!f!) do (
set "s=%%~i"
set "s=!s:>output<=><!"
echo:!s!
))&move /y tmp.cfg !f!
endlocal
exit /b

warkdimka
18-02-2016, 09:28
@echo off
setlocal enabledelayedexpansion
set "f=1.cfg"
>tmp.cfg (for /f "tokens=*" %%i in (!f!) do (
set "s=%%~i"
set "s=!s:>output<=><!"
echo:!s!
))&move /y tmp.cfg !f!
endlocal
exit /b »
спасибо большое! то, что нужно!)




© OSzone.net 2001-2012