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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Получение значении из XML и сохранение в txt

Ответить
Настройки темы
CMD/BAT - Получение значении из XML и сохранение в txt

Новый участник


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

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


Здравствуйте уважаемые форумчане!

Есть вопрос.
Имеем xml-файл с примерно таким содержанием:
Код: Выделить весь код
<id="1" x="108" y="34" w="8" h="16" />
<id="8" x="117" y="34" w="8" h="16"/>
<id="55" x="126" y="34" w="8" h="16" />
<id="157" x="175" y="0" w="9" h="16" />
Так вот, как сделать так, чтобы после обработки получился вот это:
Формула расчета:
id = x, y, x+w, y+h


То есть:
Код: Выделить весь код
1 = 108, 34, 116, 50
8 = 117, 34, 125, 50
55 =126, 34, 134, 50
157 = 175, 0, 184, 16
...и сохранился в файле.

Заранее спасибо!

Отправлено: 22:24, 29-09-2018

 

Ветеран


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

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


Цитата sector2484:
Имеем xml-файл с примерно таким содержанием: »
Упакуйте Ваш xml-файл с точным и полным содержимым в архив и приложите к сообщению.

Отправлено: 22:39, 29-09-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


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

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


Вложения
Тип файла: 7z cords.7z
(1015 байт, 5 просмотров)

Цитата Iska:
Упакуйте Ваш xml-файл с точным и полным содержимым в архив и приложите к сообщению. »

Отправлено: 22:45, 29-09-2018 | #3


Ветеран


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

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


sector2484, это не xml, это какой-то огрызок от него.

Попробуйте так (на WSH):
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strSourceFile
Dim strDestFile

Dim objFSO
Dim objRegExp

Dim arrContent
Dim strLine
Dim strResultLine


strSourceFile = "C:\Мои проекты\0202\cords.xml"
strDestFile   = "C:\Мои проекты\0202\Result.txt"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strSourceFile) Then
	With objFSO.OpenTextFile(strSourceFile)
		arrContent = Split(.ReadAll(), vbCrLf)
		.Close
	End With
	
	Set objRegExp = WScript.CreateObject("VBScript.RegExp")
	
	With objRegExp
		.Pattern    = "^<id=""(\d+)""\s+x=""(\d+)""\s+y=""(\d+)""\s+w=""(\d+)""\s+h=""(\d+)""\s+/>$"
		.IgnoreCase = True
	End With
	
	With objFSO.CreateTextFile(strDestFile, True)
		For Each strLine In arrContent
			If objRegExp.Test(strLine) Then
				With objRegExp.Execute(strLine).Item(0).Submatches
					strResultLine = .Item(0) & " = " & .Item(1) & ", " & .Item(2) & ", " & .Item(3) & ", " & .Item(4)
				End With
				
				.WriteLine strResultLine
			Else
				WScript.Echo "Can't parse string [" & strLine & "]."
			End If
		Next
		
		.Close
	End With
	
	Set objRegExp = Nothing
Else
	WScript.Echo "Can't find source file [" & strSourceFile & "]."
	WScript.Quit 2
End If

Set objFSO = Nothing

WScript.Quit 0

Отправлено: 23:11, 29-09-2018 | #4


Новый участник


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

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


Цитата Iska:
на WSH »
На BAT никак?

Отправлено: 23:29, 29-09-2018 | #5


Ветеран


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

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


sector2484, а какая разница?

Отправлено: 23:34, 29-09-2018 | #6


Новый участник


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

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


Отошли от темы.

Отправлено: 00:04, 30-09-2018 | #7


Аватара для YuS_2

Crazy


Contributor


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

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


sector2484, шашечки или ехать? Или студент, а задание для cmd?

-------
scio me nihil scire. Ѫ


Отправлено: 07:47, 30-09-2018 | #8


Ветеран


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

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


sector2484, если очень хочется, то:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=C:\Мои проекты\0202\cords.xml
set sDestFile=C:\Мои проекты\0202\Result2.txt

if exist "%sSourceFile%" (
	>"%sDestFile%" (
		for /f usebackq^ tokens^=2^,4^,6^,8^,10^ delims^=^" %%i in ("%sSourceFile%") do (
			echo %%~i = %%~j, %%~k, %%~l, %%~m
		)
	)
) else (
	echo Can't find source file [%sSourceFile%].
	exit /b 1
)

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:22, 30-09-2018 | #9


Новый участник


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

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


Цитата Iska:
for /f usebackq^ tokens^=2^,4^,6^,8^,10^ delims^=^" %%i in ("%sSourceFile%") do (
echo %%~i = %%~j, %%~k, %%~l, %%~m »
Работает, но по формуле id = x, y, w, h, а не id = x, y, x+w, y+h.

Отправлено: 10:29, 30-09-2018 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Получение значении из XML и сохранение в txt

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Реализация сохранения печатной формы из XML в DOC или TXT Kotan Скриптовые языки администрирования Windows 0 08-07-2013 17:07
CMD/BAT - Соединение с сервером TeamViewer, получение id и сохранение в документе *.txt Heretic Скриптовые языки администрирования Windows 1 29-12-2012 12:34
PowerShell - Сохранение XML в нужной кодировке dosperados Скриптовые языки администрирования Windows 1 27-07-2012 09:36
CMD/BAT - Парсинг XML/TXT mxm199 Скриптовые языки администрирования Windows 10 17-07-2012 12:34
Разное - RSS мониторинг и сохранение в xml XXXp Программирование и базы данных 1 03-03-2011 19:00




 
Переход