Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] заменить с помощью bat'ника одну строку на другую (http://forum.oszone.net/showthread.php?t=311705)

warkdimka 17-02-2016 15:39 2607060

заменить с помощью bat'ника одну строку на другую
 
Всем привет! знаю тема старая и изъезженная, но все же: нужно заменить с помощью 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 2607126

Код:

@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 2607371

Цитата:

Цитата greg zakharov
@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 »

спасибо большое! то, что нужно!)


Время: 18:54.

Время: 18:54.
© OSzone.net 2001-