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

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

Ответить
Настройки темы
CMD/BAT - Поиск тега с помощью bat

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


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

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


Всем Привет.
Подскажите решение проблемы: мне нужно что бы bat-ник в xml фаиле (текст идет сплошняком) находил тег <ID>*****</ID> и выводил его на экран и как опция брал его еще и буфер (если возможно), фаил лежит всегда по одному пути (меняется только буква диска, поэтому нужна переменная с запросом диска), максимум что я смог сделать это:

echo off
cls
set /p x=Enter Letter:
for /f "usebackq tokens=*" %%a in ("%x%:\1\file.txt") do (echo %%~a)
pause

но оно работает только в txt =( и выводит все.
PS
Извиняюсь за безграмотность (если глупость написал), ожидаю всезнающего гуру в поисках просветления

Отправлено: 17:00, 07-10-2013

 

Ветеран


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

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


Цитата maxd2007:
мне нужно что бы bat-ник в xml фаиле (текст идет сплошняком) находил тег <ID>*****</ID> »
По большому счёту — никак: сегодня сплошняком, завтра — нет; кодировки. В лучшем случае можно попробовать портированные утилиты из Unix. Я же лично для работы с xml взял бы WSH или PoSH. Впрочем, и там, и там останется вопрос с буфером обмена; у Вас какая ОС?

Отправлено: 18:08, 07-10-2013 | #2



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

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


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


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

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


Попробовал так:
echo off
cls
Find /I "<ID>*</ID>" "C:\1\file.txt"
pause
Ищет только жестко название т.е. <ID>*</ID> а не <ID>321</ID>, а xml вообще проигнорировал и выдал все что было в нем =(

Windows XP x32 и Windows 7 x32

Кодировка уже 6 лет не менялась, по крайней мере в этих фаилах

Отправлено: 18:50, 07-10-2013 | #3


Ветеран


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

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


maxd2007, Батник без сторонних утилит плох для работы с текстом, я бы использовал PowerShell, но без примера файла ( валидного xml ), это пустой разговор. Попробуйте такой вариант, с учетом, что файл однострочный и в нем один элемент "ID":
Код: Выделить весь код
@echo off
setlocal

set /p content=<"1.txt"
set "content=%content:<ID>=!%"
set "content=%content:</ID>=!%"
set "content=%content:<=^<%"
set "content=%content:>=^>%"

for /f "tokens=2 delims=!" %%i in ( "%content%" ) do (

    echo %%i
    echo.%%i| clip

)
Если разделитель "!" не подойдет ( например есть комментарий ), найдите уникальный для данного файла.

Последний раз редактировалось Foreigner, 07-10-2013 в 20:28.


Отправлено: 20:21, 07-10-2013 | #4


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


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

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


батник закрывается я не успеваю прочитать (что там, ошибка или ....), команда pause не помогает. В атаче пример xml фаила. И если честно то я не совсем понял на счет делителя (((

Последний раз редактировалось maxd2007, 21-11-2013 в 10:05.


Отправлено: 14:22, 08-10-2013 | #5


Ветеран


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

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


maxd2007, У меня все отработало правильно, в консоль вывел 3684640102, тоже самое сохранилось в буфере обмена.
Расскажите, как запускаете. И надеюсь, что правильно прописали путь к GarminDevice.xml ( вместо 1.txt ), например:
Код: Выделить весь код
set /p content=<"D:\Downloads\GarminDevice.xml"
На PowerShell:
Код: Выделить весь код
$id = ( [xml] ( gc "D:\Downloads\GarminDevice.xml" )).device.id
$id; $id | clip
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:29, 08-10-2013 | #6


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


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

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


В атаче принт скрин того что и как я делаю, (черный экран это проскакивает скрипт), попробую еще на PowerShell сегодня и отпишусь

Последний раз редактировалось maxd2007, 21-11-2013 в 10:05.


Отправлено: 13:32, 09-10-2013 | #7


Ветеран


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

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


Цитата maxd2007:
В атаче принт скрин того что и как я делаю »
А зачем вы убрали восклицательный знак?? Я понимаю, если бы заменили на другой разделитель. Он там не просто так, "!" в xml является спецсимволом, и если в файле нет комментария "<!--", то с большой долей вероятности он будет отсутствовать в теле документа, что позволяет разбить строку ( delims=! ) и взять нужную часть из нее ( tokens=2 ). Просто скопируйте батник и измените путь к файлу.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:58, 09-10-2013 | #8


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


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

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


Блин извини это я из за того что не понял на счет делителя игрался и убрал их и забыл, а т.к. вечер был то забыл восстановить, а первый раз он закрывался сразу и я не видел что там, но сегодня (после Вашего последнего поста), вернул все как было и добавил "pause":

@echo off
setlocal

set /p content=<"C:\1\GarminDevice.xml"
set "content=%content:<ID>=!%"
set "content=%content:</ID>=!%"
set "content=%content:<=^<%"
set "content=%content:>=^>%"

for /f "tokens=2 delims=!" %%i in ( "%content%" ) do (

echo %%i
pause
echo.%%i| clip
)
Теперь я вижу номер (урааааа спасибо), но в буфер кстати не берет =( (т.е. когда нажимаю ctrl+v то появляется мой старый буфер, а не ID из xml )

Отправлено: 19:22, 09-10-2013 | #9


Ветеран


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

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


Цитата maxd2007:
но в буфер кстати не берет »
Странно. На win-8 берет. Какая у вас версия виндоус, может там нет C:\Windows\System32\clip.exe? Попробуйте pause вставить в самом конце батника.

Отправлено: 19:34, 09-10-2013 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле InVariable Скриптовые языки администрирования Windows 4 22-05-2015 20:06
CMD/BAT - Поиск с помощью Bat ника shiroq Скриптовые языки администрирования Windows 11 10-10-2013 07:47
CMD/BAT - поиск с помощью Find cyber_ua Скриптовые языки администрирования Windows 4 20-03-2012 16:40
CMD/BAT - [решено] bat поиск cyber_ua Скриптовые языки администрирования Windows 9 28-02-2012 01:18
[решено] Вытянуть содержание HTML тега с помощью регулярных выражений aesir AutoIt 4 28-08-2009 21:22




 
Переход