Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2733
Благодарности: 1698

Профиль | Отправить PM | Цитировать


Если в строке <Server>USER-PC/3050</Server> больше ничего нет, то вот решение
Код: Выделить весь код
@echo off
Set "FileIn=Z:\Box_In\Ку ку.xml"
Del "%FileIn%.tmp" 2>nul

Set "RepIn=<Server>USER-PC/3050</Server>"
Set "RepOut= ^<Server^>%ComputerName%/3050^</Server^>

SetLocal EnableExtensions EnableDelayedExpansion

FOR /F "usebackq delims=[]" %%i IN (`Find /N "%RepIn%" "%FileIn%"`) DO Set /A "N=%%i" 2>nul
Set /A ii=0
FOR /F "usebackq delims=" %%s IN (`more "%FileIn%"`) DO (
	Set /A ii+=1
	If !ii!==%N% (Echo %RepOut%>>"%FileIn%.tmp") Else (Echo %%s>>"%FileIn%.tmp")  
)
Move /Y "%FileIn%.tmp" "%FileIn%" >nul
alpap, у меня почему-то ваш батник отрабатывает неправильно
Вот исходный файл(Z:\Box_In\Ку ку.xml)
Код: Выделить весь код
<?xml version="1.0" encoding="windows-1251"?>
 <Settings>
 <DB>
 <Type>Firebird</Type>
 <Server>USER-PC/3050</Server>
 <Database>C:\Taxcom\Docliner Single\DB\Docliner.fdb</Database>
 <IntegratedSecurity>False</IntegratedSecurity>
 <Login>Login</Login>
 <Password>Password</Password>
 <DatabaseMK>C:\Taxcom\Docliner Single\DB\Docliner_MK.fdb</DatabaseMK>
 <Filestream>C:\Taxcom\Docliner Single\DB\Filestream</Filestream>
 <CountConnection>5</CountConnection>
 </DB>
 </Settings>
Вот Ваш батник с моим путём
Код: Выделить весь код
@echo off

set "f=Z:\Box_In\Ку ку.xml"
set "tg=<Server>"
set "sz=%Computername%"
<"%f%">$ (for /f "delims=" %%a in ('more') do @(
  echo "%%~a"|>nul find "%tg%" && (
   for /f "tokens=1,3 delims=><" %%b in ("%%~a") do @echo:^<%%b^>%sz%^<%%c^>
  ) || (
   echo %%a
  )
 )
)& >nul move $ "%f%"
exit
Вот результат его работы
Код: Выделить весь код
<?xml version="1.0" encoding="windows-1251"?>
 <Settings>
 <DB>
 <Type>Firebird</Type>
< >MEGALOMAN<USER-PC/3050>
 <Database>C:\Taxcom\Docliner Single\DB\Docliner.fdb</Database>
 <IntegratedSecurity>False</IntegratedSecurity>
 <Login>Login</Login>
 <Password>Password</Password>
 <DatabaseMK>C:\Taxcom\Docliner Single\DB\Docliner_MK.fdb</DatabaseMK>
 <Filestream>C:\Taxcom\Docliner Single\DB\Filestream</Filestream>
 <CountConnection>5</CountConnection>
 </DB>
 </Settings>

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 24-01-2017 в 21:25.


Отправлено: 19:55, 24-01-2017 | #11