Имя пользователя:
Пароль:
 

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

Старожил


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

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


vano42, внешнюю утилиту grep можно взять здесь.

Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion

Set File=file.txt
Set Out=file2.txt
Set NewValue=TestName123

:: Определяем номер строки с искомым тэгом
For /F "delims=:" %%A In ('grep -En "<string name=.u_name.>[^<]*</string>" "%File%"') Do (
	Set Offset=%%A
)

:: Разбираем файл построчно
For /F "usebackq delims=" %%A In ("%File%") Do (
	Set /A i+=1
	rem Пишем всё, что не является искомой строкой в другой файл
	If Not !i!==%Offset% (
		Echo %%A
	) Else (
		For /F "tokens=1,2,3,4 delims=<>" %%A In ('grep -E "<string name=.u_name.>[^<]*</string>" "%File%"') Do (
			rem Проверка на отступ перед тэгом, замена значения
			Echo.%%A|Find "string">nul&&(
				Echo ^<%%A^>%NewValue%^<%%C^>
			)||(
				Echo %%A^<%%B^>%NewValue%^<%%D^>
			)
		)
	)
)>>"%Out%"
Pause
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:19, 09-08-2012 | #6