|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Нужна помощь по StringRegExp |
|
[решено] Нужна помощь по StringRegExp
|
Старожил Сообщения: 251 |
Профиль | Отправить PM | Цитировать
Нужна помощь по этому коду.
#include <Array.au3> $iPID = Run("wmic baseboard get Manufacturer", "", @SW_HIDE, $STDOUT_CHILD) ;$iPID = Run("wmic baseboard get Product", "", @SW_HIDE, $STDOUT_CHILD) ProcessWaitClose($iPID) $sOut = StdoutRead($iPID) ;$avArray = StringSplit(StringStripWS('"' & $sOut & '"', 4), @CRLF, 1) $avArray = StringSplit('"' & $sOut & '"', @CRLF, 1) _ArrayDisplay($avArray) $test = StringStripWS($avArray[2], 2) ;2 = удаляет пробельные символы в конце строки $len = StringLen($test) MsgBox(0, "Количество символов:", $avArray[2] & $len) 1. $avArray[2] вся строка. 2. $avArray[2] только первое слово. Вот со вторым вариантом у меня проблема возникла. Не могу вывести в переменную из $avArray[2] только первое слово. Может быть использовать метасимволы в StringRegExp, но я не силён в этом. Или же набросайте какой нибудь другой код скрипта, более подходящий. Спасибо за внимание. |
|
Отправлено: 14:10, 23-05-2020 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата nibble74:
Вы пытаетесь грести вилами вместо весла. Wbem превосходно поддерживает автоматизацию: AutoItSetOption("MustDeclareVars", 1) Local $oSWbemLocator Local $oSWbemServicesEx Local $oSWbemObjectEx $oSWbemLocator = ObjCreate("WbemScripting.SWbemLocator") $oSWbemServicesEx = $oSWbemLocator.ConnectServer(".", "root\cimv2") For $oSWbemObjectEx In $oSWbemServicesEx.ExecQuery("SELECT Manufacturer FROM Win32_BaseBoard") ConsoleWrite($oSWbemObjectEx.Manufacturer & @CRLF) Next Exit(0) |
|
Отправлено: 15:01, 23-05-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 251
|
Профиль | Отправить PM | Цитировать Iska, спасибо за оперативный ответ.
Вот полный командный сценарий: С Manufacturer и Product с помощью вашего кода выше всё понятно. Как быть с этим: Случалось, что некоторые модели материнских плат в "Product" содержит не одно слово. В результате переименование имени компьютера на номер материнской платы будет невозможен, т.к. имя компьютера не должно содержать пробелов. Хотелось бы из "Product" выбрать первое слово для переименования компьютера. |
Отправлено: 16:38, 23-05-2020 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать nibble74, то есть, мы плавно перешли к пакетным файлам?
Цитата nibble74:
for /F "skip=1 tokens=1 delims=" %%b in ('wmic baseboard get product') do if not defined product set "product=%%b" if defined product wmic computersystem where name="%computername%" call rename name=%product: =% Цитата nibble74:
|
||
Отправлено: 20:11, 23-05-2020 | #4 |
Старожил Сообщения: 251
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Придется наверное прибегнуть к простому варианту RunWait(@ComSpec & ' /c ........', '', @SW_HIDE) |
||
Отправлено: 23:56, 23-05-2020 | #5 |
Пользователь Сообщения: 68
|
Профиль | Отправить PM | Цитировать nibble74, покажите, что в $sOut.
|
Отправлено: 12:17, 24-05-2020 | #6 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Так дали же пример, просто возьми первое слово:
$oSWbemLocator = ObjCreate("WbemScripting.SWbemLocator") $oSWbemServicesEx = $oSWbemLocator.ConnectServer(".", "root\cimv2") $sManufacturer = '' For $oSWbemObjectEx In $oSWbemServicesEx.ExecQuery("SELECT Manufacturer FROM Win32_BaseBoard") $sManufacturer = StringRegExpReplace($oSWbemObjectEx.Manufacturer, '^([^\h]+).*', '\1') Next ConsoleWrite($sManufacturer & @CRLF) #include <Array.au3> $iPID = Run(@ComSpec & " /C wmic baseboard get Manufacturer", "", @SW_HIDE, $STDOUT_CHILD) ProcessWaitClose($iPID) $sOut = StdoutRead($iPID) $avArray = StringRegExp($sOut, '([^\s]+)', 3) If Not @error Then _ArrayDisplay($avArray) MsgBox(0, '', $avArray[1] & @CRLF & "Количество символов: " & StringLen($avArray[1])) EndIf |
------- Отправлено: 12:26, 24-05-2020 | #7 |
Старожил Сообщения: 251
|
Профиль | Отправить PM | Цитировать Creat0R, То что надо было. У меня путаница происходила с StringRegExp )
Всем спасибо за отклик и помощь ! |
Отправлено: 13:16, 24-05-2020 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Нужна помощь по Excel | Veronika35 | Microsoft Office (Word, Excel, Outlook и т.д.) | 4 | 24-06-2017 19:26 | |
Разное - нужна помощь по сборке 8.1 | mitin | Microsoft Windows 8 и 8.1 | 3 | 15-04-2015 22:36 | |
[решено] В помощь по функциям StringRegExp и StringRegExpReplace | beve | AutoIt | 3 | 19-02-2009 20:56 | |
Разное - Нужна помощь по SP-Forth | zi0n | Программирование и базы данных | 1 | 18-08-2008 08:00 | |
нужна помощь по RIS ! | mikola1983 | Автоматическая установка Windows 2000/XP/2003 | 3 | 03-04-2008 15:33 |
|