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

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

Ответить
Настройки темы
CMD/BAT - Найти строку и в ней записать в переменную содержимое между кавычек.

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


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

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


Изменения
Автор: rango13
Дата: 04-04-2018
Описание: добавление про FreeDOS.
Всем привет!

Необходимо пройтись поиском по каждой строке во всём файле, найти определенную строку(несколько слов вхождений) и в этой найденной строке записать в переменную слова, находящиеся между кавычек.

Как пример, ищем в файле ниже строку "Serial Number", затем в ней извлекаем значение "11325":

Код: Выделить весь код
....
Motherboard "ASUS"
....
Product Name "B150M-A"
Serial Number of motherboard "11325"


Upd. bat-файл будет грузиться только с FreeDOS.

Отправлено: 13:27, 03-04-2018

 

Ветеран


Contributor


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

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


Iska, Каюсь, поставил на флэшку MS Dos 8. Там возможности CMD очень ограничены. FreeDos похоже не радостнее. ИМХО, решить поставленную задачу, только используя команды CMD, вряд ли возможно. Я не понимаю суперцель поставленной задачи, но, если надо загрузиться с флэшки и что-то отобразить из файла, возможное решение - наваять exe-файл на каком-нибудь забытом турбо-си/паскале/бейсике. Вот если бы можно было перенести CMD из Windows, например, 7 на флэшку со всеми основными утилитами. Пока не нашел как.

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


Последний раз редактировалось megaloman, 05-04-2018 в 16:21.

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

Отправлено: 14:07, 05-04-2018 | #11



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

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


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


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

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


Цитата alpap:
может Phoenix BIOS Setup ? »
Нет. Она современные матплаты не поддерживает.

Цитата Iska:
Как по мне, так для вывода вполне достаточно »
wmic из под DOS не запуститься, очевидно. Получается, под FreeDOS нет способа решения задачи?

Отправлено: 20:26, 05-04-2018 | #12


Ветеран


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

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


тут можно провести аналогию по работе до загрузки в систему, что мы обычно используем - Total Commander. Брать его в пару и крутить его рычаги, больше ничего в голову не идет.

Отправлено: 21:17, 05-04-2018 | #13


Ветеран


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

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


Цитата rango13:
wmic из под DOS не запуститься, очевидно. »
Само собой. Я писал про то, что для получения указанных сведений достаточно wmic.exe, и никакой FreeDOS не нужен.

Цитата rango13:
Получается, под FreeDOS нет способа решения задачи? »
Есть же:
Цитата megaloman:
наваять exe-файл на каком-нибудь забытом турбо-си/паскале/бейсике. »
Причём, необязательно на забытом и древнем.

Если б Вы объяснили общую задачу, в том числе — зачем (почему/для чего/с какой целью) нужно сие проделывать именно то, что описано, и именно из-под DOS, может быть, стало бы понятнее.

Отправлено: 01:38, 06-04-2018 | #14


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


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

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


Изображения
Тип файла: jpg AwardDMIConfUtility.jpg
(90.3 Kb, 3 просмотров)
Тип файла: png post.png
(44.1 Kb, 2 просмотров)

Цитата Iska:
Если б Вы объяснили общую задачу, в том числе — зачем (почему/для чего/с какой целью) нужно сие проделывать именно то, что описано, и именно из-под DOS, может быть, стало бы понятнее. »
Есть бесплатная система учёта техники - Spiceworks. Она через wmic собирает информацию по имеющимся машинам(на которых установлено клиентское ПО-сборщик) и в веб-интерфейсе оной каждый ПК виден как отдельная карточка с данными о нём. В этой карточке пишется вся история физических изменений в ПК(замена ОЗУ/матплаты/HDD). Если производится апгрейд на новую связку(mb+cpu+mem), то при опросе этой новой связки Spiceworks решит, что это новое устройство и создаст дублирующую карточку. Если же до установки клиентской части Spiceworks прописать через утилиту(работающую только в DOS) такой же серийный номер, как и на старой матплате - карточки нового и старого устройства объединятся и в ней сохраниться вся история модернизации. Это к вопросу зачем.

Теперь зачем ещё прописывать значения Motherboard и Product Number: почему-то в матплатах от ASUS(которые у нас только и закупаются) эти значения пустуют - а через утилиту(AmideDOS.exe) эти значения можно прописать в BIOS и их как раз и вытащит клиент-сборщик Spiceworks.

Проблема в том, что есть много ПК, где эти параметры не прописаны. В bat-файле я хотел передавать ему только Serial Number, а остальные два значения чтобы прописывались автоматом.

В итоге все эти данные с помощью отчёта из Spiceworks автоматом собираются в единую таблицу Excel, по которой видно, что нужно модернизировать в новом году.

Последний раз редактировалось rango13, 08-04-2018 в 05:50. Причина: добавил ссылку на AmideDOS.exe


Отправлено: 05:43, 08-04-2018 | #15


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


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

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


Может быть, можно пользоваться не FreeDOS, а чем-то ещё подобным, чтобы скрипт работал полноценно?

Отправлено: 05:45, 10-04-2018 | #16


Ветеран


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

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


rango13, дык, не факт, что Ваша утилита заработает под «чем-то ещё подобным» (коим является только Windows с WinAPI). Выход подсказали выше:
Цитата megaloman:
возможное решение - наваять exe-файл на каком-нибудь забытом турбо-си/паскале/бейсике. »
хоть банальнейший QB 4.5 . Приложение должно брать Вашу утилиту, исполнять её с потребными параметрами, получать её stdout, читать оттуда, фильтровать, затем по результатам фильтрации исполнять ещё раз с другими параметрами. Я так вижу.
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:30, 10-04-2018 | #17


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


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

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


Цитата Iska:
хоть банальнейший QB 4.5 . Приложение должно брать Вашу утилиту, исполнять её с потребными параметрами, получать её stdout, читать оттуда, фильтровать, затем по результатам фильтрации исполнять ещё раз с другими параметрами. Я так вижу. »
К сожалению, на это времени нет. Решил полуавтоматизацией процесса.
1. Скачал FreeDOS USB “Full” installer
2. Вытащил с него программу GREP и скопировал её на имеющуюся USB-флешку с FreeDOS и использовал GREP для нахождения необходимых строк. Не знаю почему, но команды FIND/FINDSTR("Invalid command") в этом дистрибутиве нет.
3. Т.к. матплаты только от ASUS в организации, то остается прописать два параметра: модель матплаты и серийный номер, чего скрипт и делает:
Скрытый текст

@ECHO OFF
amidedos /BM | GREP "(/BM)"
amidedos /BP | GREP "(/BP)"
amidedos /SS | GREP "(/SS)"

set /p MODEL=Enter MotherBoard Model:
set /p INV=Enter Inventory Number:

amidedos /SM "ASUS" > null 2>&1
amidedos /BM "ASUS" > null 2>&1
amidedos /BMH "ASUS" > null 2>&1
amidedos /SP "%MODEL%" > null 2>&1
amidedos /BP "%MODEL%"> null 2>&1
amidedos /BPH "%MODEL%" > null 2>&1
amidedos /SS "%INV%" > null 2>&1
amidedos /CS "%INV%" > null 2>&1
cls
; Вывод итогового результата работы скрипта
amidedos /BM | GREP "(/BM)"
amidedos /BP | GREP "(/BP)"
amidedos /SS | GREP "(/SS)"

Отправлено: 12:07, 11-04-2018 | #18


Ветеран


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

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


rango13, Вы что-то путаете с:
Цитата rango13:
Не знаю почему, но команды FIND/FINDSTR("Invalid command") в этом дистрибутиве нет. »
поскольку find там есть, токмо не в формате exe, а в формате com:
Скрытый текст

Отправлено: 01:12, 12-04-2018 | #19


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


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

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


Цитата Iska:
поскольку find там есть, токмо не в формате exe, а в формате com: »
Странно, ну ладно.
Если что, для накатывания FreeDOS на USB-флешку использовал программу Rufus. У неё при форматировании флешки можно сразу сделать её загрузочной и записать на неё FreeDOS. Может, просто урезанная версия там.

Отправлено: 05:28, 12-04-2018 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как записать в переменную результат выполнения команды? MSI Скриптовые языки администрирования Windows 64 24-12-2020 18:20
CMD/BAT - [решено] Узнать имя пользователя и записать в переменную Darkar25 Скриптовые языки администрирования Windows 37 13-01-2018 23:59
CMD/BAT - Поиск 1ой папки и записать ее в переменную Andreyk1s Скриптовые языки администрирования Windows 2 06-01-2017 23:31
CMD/BAT - найти файл и записать в переменную pzh2393 Скриптовые языки администрирования Windows 7 20-01-2013 03:35
CMD/BAT - [решено] Найти в реестре параметр и записать в переменную имя ветки в которой он находится root221 Скриптовые языки администрирования Windows 11 25-11-2012 07:54




 
Переход