Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Windows Новый топик    Ответить
 Получение значения чз bat файл  [new]
Alexei S
Member

Откуда:
Сообщений: 226
Есть некий конфигурационный XML файл, в котором есть строки вида:
<PROPERTY NAME="HOST">server-1.domain.</PROPERTY> 
Каким образом можно через виндосовский батник вытащить значение для свойства name (server-1.domain)?
15 апр 08, 12:46    [5547594]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31768

Привет, Alexei!
Ты пишешь:

Alexei
AS> Есть некий конфигурационный XML файл, в котором есть строки вида:
AS> <PROPERTY NAME="HOST">server-1.domain.</PROPERTY>
AS> Каким образом можно через виндосовский батник
AS> вытащить значение для свойства name (server-1.domain)?
RTFM: findstr

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4

15 апр 08, 12:49    [5547646]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
Alexei S
Member

Откуда:
Сообщений: 226
и что толку от этой findstr?
Мне нужно, если я допустим делаю запрос по ключу HOST, чтобы он выдавал соотв. значение,
а не HOST.
15 апр 08, 15:50    [5549416]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
DmGr
Member

Откуда:
Сообщений: 185
Может лучше js/vbs а не bat
15 апр 08, 16:11    [5549615]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
Alexei S
Member

Откуда:
Сообщений: 226
Нет, нужен именно батник.
15 апр 08, 16:17    [5549655]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
stepanov_vv
Member

Откуда: Ростов-на-Дону
Сообщений: 306
Плита упала на бентли, поэтому брать надо именно бентли
Насколько я знаю, в cmd нет средств обработки xml. Так что, имхо, надо писать на чем-то другом. Или искать сильно извращенные методы...
Может я не прав, буду с удовольствием следить за темой.
15 апр 08, 16:37    [5549825]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
Alexei S
Member

Откуда:
Сообщений: 226
Формат входного конфигурационного файла не имеет абсолютно никакого значения. Будь то xml, txt или cf. Нужно просто отыскать в нем определенную строку и вытащить из неё значение для указанного в параметрах поиска строки ключа.
15 апр 08, 16:45    [5549900]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
stepanov_vv
Member

Откуда: Ростов-на-Дону
Сообщений: 306
Alexei S
Формат входного конфигурационного файла не имеет абсолютно никакого значения. Будь то xml, txt или cf. Нужно просто отыскать в нем определенную строку и вытащить из неё значение для указанного в параметрах поиска строки ключа.

Интересно как получается, что-то типа "не важно каким бензином заправлять машину 76,92,дизелем, лишь бы ехала".....
Тогда как минимум должны еще какие-то ограничения на файл налагаться. Просто в изначальном посте было сказано только про XML. Или мне память изменяет?
А то ж я могу и процитировать:
Alexei S
Есть некий конфигурационный XML файл...
15 апр 08, 16:55    [5549989]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
Alexei S
Member

Откуда:
Сообщений: 226
В первом посте про XML файл сказано только для справки. Также это может быть и любой другой файл.
Смысловой нагрузки он в данном контексте не и-ме-ет.
15 апр 08, 17:00    [5550050]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
stepanov_vv
Member

Откуда: Ростов-на-Дону
Сообщений: 306
Ну тогда трид, похоже, тоже смысловой нагрузки не несет. За сим позвольте откланяться. А про поиск строки уже было сказано findstr.
15 апр 08, 17:10    [5550147]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
Bolt IT
Guest
пример работы с с текстовым файлом

@echo off

rem Читаем настройки из файла settings.txt, который должен располагаться в
rem том же каталоге, что и bat-файл. Если не удалось распарсить настройки -
rem выходим с ненулевым кодом возврата.
call :read_settings %~dp0\settings.txt || exit /b 1

rem Прочитанные настройки:
echo Build mode  : %BUILDMODE%
echo Compiler    : %COMPILER%
echo Architecture: %ARCH%

rem Выход из сценария. Дальше - только функции.
exit /b 0

rem
rem Функция для чтения настроек из файла.
rem Вход:
rem       %1           - Имя файла с настройками
:read_settings

set SETTINGSFILE=%1

rem Проверка существования файла
if not exist %SETTINGSFILE% (
    echo FAIL: Файл с настройками отсутствует
    exit /b 1
)

rem Обработка файла c настройками
rem Здесь:
rem     eol=# указывает на то, что содержимое строки начиная с символа #
rem     и до ее конца может быть пропущено как комментарий.
rem
rem     delims== указывает, что разделителем значений является символ =
rem 
rem     tokens=1,2 приводит к тому, что в переменную %%i будет занесен первый
rem     токен, а в %%j - второй.
rem 

for /f "eol=# delims== tokens=1,2" %%i in (%SETTINGSFILE%) do (
    rem В переменной i - ключ
    rem В переменной j - значение
    rem Мы транслируем это в переменные окружения
    set %%i=%%j
)

exit /b 0
15 апр 08, 17:18    [5550226]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
Alexei S
Member

Откуда:
Сообщений: 226
Да что вы привязались со своим findstr?
Сможете его использовать для моей задачи - куплю вам пива и пойду продавать славянский шкаф.

Bolt IT:
Спасибо, но в моем случае это слегка избыточно. Нужно что-то вроде cat <file> | grep <по ключу> (то, что так упорно навязывают мне некоторые личности, так до конца и не поняв суть вопроса) | awk {print $4} в unix.
15 апр 08, 17:36    [5550392]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
stepanov_vv
Member

Откуда: Ростов-на-Дону
Сообщений: 306
Может я конечно тупорылый, но не могу понять суть задачи. То это XML, то не XML, теперь уже структурированный текст....
Короче, как сами разберетесь в чути своей проблемы- раскажете.
Могу предложить:
http://gnuwin32.sourceforge.net/summary.html
А еще лучше пример файла в студию, а то можно гадать до ишачей пасхи "а что же досточтимый аффтар имел ввиду?"
15 апр 08, 17:50    [5550514]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
aleks2
Guest
Alexei S
Есть некий конфигурационный XML файл, в котором есть строки вида:
<PROPERTY NAME="HOST">server-1.domain.</PROPERTY> 
Каким образом можно через виндосовский батник вытащить значение для свойства name (server-1.domain)?


for /?

Поясняющий пример:

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

эта команда обрабатывает файл myfile.txt, пропускает все строки, которые
начинаются с символа точки с запятой, и передает вторую и третью подстроки
из каждой строки в тело цикла, причем подстроки разделяются запятыми и/или
пробелами. В теле цикла переменная %i используется для второй подстроки,
%j - для третьей, а %k получает все оставшиеся подстроки после третьей.
Имена файлов, содержащие пробелы, необходимо заключать в двойные кавычки.
я продолжения нажмите любую клавишу . . .
15 апр 08, 18:09    [5550689]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
miksoft
Member

Откуда:
Сообщений: 38540
а ключ и его значение в файле всегда гарантированно в одной строке? перенос строки (или несколько) между ними вклиниться не может?
15 апр 08, 18:37    [5550842]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
Biz©
Member

Откуда: Snezhinsk
Сообщений: 5687
Alexei S
Bolt IT:
Спасибо, но в моем случае это слегка избыточно. Нужно что-то вроде cat <file> | grep <по ключу> (то, что так упорно навязывают мне некоторые личности, так до конца и не поняв суть вопроса) | awk {print $4} в unix.

воблин ... а подумать, разобраться, хелпы почитать ?
for /f "tokens=... delims=..." ... ('findstr...') - вот вам и cat | grep | awk
15 апр 08, 22:06    [5551444]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
Alexei S
Member

Откуда:
Сообщений: 226
Спасибо, получилось сделать таким образом:
FOR /F "tokens=4 delims=>,< " %%i in ('findstr /C:"HOST" connect.xml') do echo %%i
Но появилась ещё одна проблемка, дело в том, что в connect.xml есть две разные группы (Group1 и Group2) с идентичными наборами свойств. Значения для ключей отличаются. При запуске команды выше, получаем оба значения для HOST. А можно каким-либо образом сделать так, чтобы получать значение только группы 2, пропуская значения первой?
И сразу же второй вопрос, каким образом можно переписать полученное значение connect.xml новым? То есть что-то вроде echo %%new_host >> FOR /F "tokens=4 delims=>,< " %%i in ('findstr /C:"HOST" connect.xml') do echo %%new_host >> %%i ?
16 апр 08, 11:35    [5553150]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14957
Может, проще найти командный парсер XML?
17 апр 08, 09:22    [5558784]     Ответить | Цитировать Сообщить модератору
 Re: Получение значения чз bat файл  [new]
stepanov_vv
Member

Откуда: Ростов-на-Дону
Сообщений: 306
Flying-home
Может, проще найти командный парсер XML?

+ стопицот
17 апр 08, 09:32    [5558823]     Ответить | Цитировать Сообщить модератору
Все форумы / Windows Ответить