|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Получить название процессора |
|
CMD/BAT - Получить название процессора
|
Новый участник Сообщения: 9 |
Приветствую участников форума!
Есть задача: Имеется бат-файл типа: wmic cpu get name >cpu.txt Задачу он свою выполняет. Сохраняет нужную мне информацию в текстовом файле. Но меня не устраивает кодировка получившегося текстовика (Юникод). Надо обычную Windows-кодировку.... И хотелось бы сделать его дополнительное редактирование прямо этим же батником: убрать верхнюю строчку и оставить только вторую. И третье условие: батник должен запускаться на многих машинах со съёмного жёсткого диска и сохрянять свой текстовик прямо на съмный носитель. Текстовый файл, который получается: Name <cpuname> Текстовый файл, который нужен: <cpuname> Т.е. командой батника необходимо убрать верхнюю строку текстового файла. Надеюсь, понятно изложил суть проблемы... извиняюсь за корявость.... В программировании не особо разбираюсь. Жду помощи) |
|
Отправлено: 12:03, 20-12-2010 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать %PROCESSOR_IDENTIFIER% (но придётся пересчитывать Family-Model-Stepping в название)
или cpuz |
Отправлено: 02:43, 21-12-2010 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать kiripanda, C:\Documents and Settings\Manager>%processor_identifier%
"x86" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. to ALL Существует команда dxdiag /t <имя_файла> в результате которой получается текстовый файл с полной информацией о системе. Как с помощью батника вытащить из него только нужные строки в отдельные текстовики с нужной кодировкой. Подскажите синтаксис команд. Мне бы принцип понять.... |
Последний раз редактировалось AD1DA5, 21-12-2010 в 11:40. Отправлено: 11:31, 21-12-2010 | #12 |
Сообщения: 53488
|
Профиль | Отправить PM | Цитировать Цитата kiripanda:
|
|
Отправлено: 13:54, 21-12-2010 | #13 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать |
Последний раз редактировалось kiripanda, 21-12-2010 в 20:07. Отправлено: 19:19, 21-12-2010 | #14 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать kiripanda, Спасибо за разъяснение! Я уж и не думал, что на мою глупость ответят разумно :-)
Если Вам не сложно, ответьте, пожалуйста ещё на 4 вопроса: 1) Данный код может работать на компьютерах со съёмного носителя, если системный диск не "С"? Т.е. код универсален для любой машины и директории запуска батника? 2) Переменную идентификации процессора Вы указали. А можно узнать весь список переменных для dxdiag? Чтобы можно было узнать, например, инфо о видеокарте и других устройствах.... 3) Запустив батник я обнаружил, что вместе с именем процессора там вписалось и ещё много мусора: Processor: AMD Athlon(tm) XP 1800+, ~1.5GHz x86 Family 6 Model 8 Stepping 1, AuthenticAMD Можно оставить только: AMD Athlon(tm) XP 1800+, ~1.5GHz??? 4) Можно будет добавить в этот код ещё несколько переменных, чтобы не создавать отдельный батник для каждого устройства? Заранее спасибо. |
Последний раз редактировалось AD1DA5, 21-12-2010 в 23:18. Отправлено: 22:57, 21-12-2010 | #15 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать @echo off dxdiag.exe /t dxdiag.tmp ( findstr /c:" Machine name:" dxdiag.tmp echo. findstr /c:" Operating System:" dxdiag.tmp echo. findstr /c:"System Manufacturer:" dxdiag.tmp findstr /c:" System Model:" dxdiag.tmp echo. findstr /c:" Processor:" dxdiag.tmp findstr /c:" Memory:" dxdiag.tmp echo. findstr /c:" Card name:" dxdiag.tmp findstr /c:" Display Memory:" dxdiag.tmp findstr /c:" Current Mode:" dxdiag.tmp echo. findstr /c:" Drive:" dxdiag.tmp findstr /c:" Model:" dxdiag.tmp ) >"%COMPUTERNAME%.txt" del dxdiag.tmp |
Последний раз редактировалось kiripanda, 22-12-2010 в 02:01. Отправлено: 23:48, 21-12-2010 | #16 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать kiripanda, Извиняюсь, что не совсем верно сформулировал вопросы.
Буду конкретен: Надо извлечь информацию о следующих устройствах: - Операционная система: "Windows Server 2003, Enterprise Edition (5.2, Build 3790) Service Pack 2" - Версия БИОСа: "AWARD Modular BIOS v6.00PG" - Процессор: "AMD Athlon(tm) XP 1800+, ~1.5GHz" - Оперативная память: "2048MB RAM" - Материнская плата : "<модель>" - Видеокарта: "NVIDIA GeForce MX 440" - Разрешение экрана: "1280 x 1024 (32 bit) (60Hz)" - Жёсткий диск: "<HDD1>, <HDD2> .... <HDDn>" (в столбик) - Привод: "<CDROM1>, <CDROM2> .... <CDROMn>" (в столбик) - Сетевые карты: "<NET1>, <NET2> .... <NETn>" (в столбик) - Звуковая карта: "<soundcard_name>" Каждая из выше приведённых строчек должна писаться в отдельный текстовый файл с назначаемым мной именем в батнике (например: инфо о ЦП пишется в файл cpu.txt, а об оперативке в ram.txt и так далее). Каждый такой текстовик должен содержать только одну строку с конкретной информацией о железке (как примеры в кавычках) или если устройств несколько, например, HDD, то в столбик. Ну ещё не забыть про норм кодировку и автозамену старых файлов-отчётов новыми при каждом повторном запуске батника. Батник должен работать на всех системах семейства Microsoft, начиная с Windows XP и кончая "Семёркой", не зависимо от битности. Если, то, что я перечислил возможно сделать с помощью командной строки, то это решит все проблемы и тему можно будет закрывать. Плохо разбираюсь в матчасти и возможно сильно захамил с требованиями, но всё же надеюсь :-) |
Отправлено: 01:51, 22-12-2010 | #17 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать AD1DA5, вариант скрипта, сохраняющего инфу в кодировке Windows-1251.
@Echo Off CHCP 866 >nul For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC OS GET Caption^,CSDVersion /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Операционная система: %%B, %%C" " %%B, %%C" "_os.txt" For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC BIOS GET Manufacturer^,Name /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Версия БИОСа: %%B, %%C" " %%B, %%C" "_bios.txt" For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC CPU GET Name^,MaxClockSpeed /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Процессор: %%C, %%B MHz" " %%C, %%B MHz" "_cpu.txt" For /F "Tokens=1,3 Delims==:" %%A In ('WMIC COMPUTERSYSTEM GET TotalPhysicalMemory /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Оперативная память: %%B bytes" " %%B bytes" "_ram.txt" For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC BASEBOARD GET Manufacturer^,Product /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Материнская плата: %%B, %%C" " %%B, %%C" "_mb.txt" For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC path Win32_VideoController GET Name^,AdapterRAM /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Видеокарта: %%C, %%B bytes RAM" " %%C, %%B bytes RAM" "_video.txt" For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC path Win32_VideoController GET VideoModeDescription^,CurrentRefreshRate /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Разрешение экрана: %%C, %%B Hz" " %%C, %%B Hz" "_screenres.txt" For /F "Tokens=1,3 Delims==:" %%A In ('WMIC DISKDRIVE Where InterfaceType^=^'IDE^' GET Model /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Жесткий диск: %%B" " %%B" "_hdd.txt" For /F "Tokens=1,3 Delims==:" %%A In ('WMIC path Win32_CDROMDrive GET Name /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Привод: %%B" " %%B" "_odd.txt" For /F "Tokens=1,3 Delims==:" %%A In ('WMIC path Win32_NetworkAdapter Where ^"AdapterTypeId^=0 And NetConnectionStatus^=2^" GET Name /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Сетевая карта: %%B" " %%B" "_net.txt" For /F "Tokens=1,3 Delims==:" %%A In ('WMIC path Win32_SoundDevice GET Name /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Звуковая карта: %%B" " %%B" "_sound.txt" GoTo :EOF :_Func CHCP 1251 >nul If %~1 EQU 1 Echo.%~2 >%4 If %~1 GTR 1 Echo.%~3 >>%4 CHCP 866 >nul |
Отправлено: 11:54, 24-12-2010 | #18 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать El Sanchez, а можно сделать с опросом всех компьютеров локальной сети и записью параметров в отдельную папку для каждой машины?
|
Отправлено: 16:04, 24-12-2010 | #19 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать El Sanchez, Класс! Отличный код. Но только мне пришлось его немного исправить под себя:
@Echo Off CHCP 866 >nul For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC OS GET Caption^,CSDVersion /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "%%B, %%C" "%%B, %%C" "os.txt" For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC BIOS GET Manufacturer^,Name /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "%%B, %%C" "%%B, %%C" "bios.txt" For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC CPU GET Name^,MaxClockSpeed /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "%%C, %%B MHz" "%%C, %%B MHz" "cpu.txt" For /F "Tokens=1,3 Delims==:" %%A In ('WMIC COMPUTERSYSTEM GET TotalPhysicalMemory /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "%%B bytes" "%%B bytes" "ram.txt" For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC BASEBOARD GET Manufacturer^,Product /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "%%B, %%C" "%%B, %%C" "mb.txt" For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC path Win32_VideoController GET Name^,AdapterRAM /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "%%C, %%B bytes RAM" "%%C, %%B bytes RAM" "video.txt" For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC path Win32_VideoController GET VideoModeDescription^,CurrentRefreshRate /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "%%C, %%B Hz" "%%C, %B Hz" "screenres.txt" For /F "Tokens=1,3 Delims==:" %%A In ('WMIC DISKDRIVE Where InterfaceType^=^'IDE^' GET Model /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "%%B" "%%B" "hdd.txt" For /F "Tokens=1,3 Delims==:" %%A In ('WMIC path Win32_CDROMDrive GET Name /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "%%B" "%%B" "odd.txt" For /F "Tokens=1,3 Delims==:" %%A In ('WMIC path Win32_NetworkAdapter Where ^"AdapterTypeId^=0 And NetConnectionStatus^=2^" GET Name /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "%%B" "%%B" "net.txt" For /F "Tokens=1,3 Delims==:" %%A In ('WMIC path Win32_SoundDevice GET Name /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "%%B" "%%B" "sound.txt" GoTo :EOF :_Func CHCP 1251 >nul If %~1 EQU 1 Echo.%~2 >%4 If %~1 GTR 1 Echo.%~3 >>%4 CHCP 866 >nul 1) список сетевых адаптеров не полон( У меня на тестовой машине их стоит 4 штуки... а скрипт выдал мне только одну реальную + Hamachi 2) в список видеокарточек затесался Radmin... не в тему... 3) объём памяти оперативки и видеокарточки в байтах... не особо наглядно, но скорее всего тут уж ничего не поделаешь. Придётся именно эту информацию брать по рецепту камрада kiripanda... 4) файл screenres.txt выглядит несколько странно: Напрягаяет наличие последней строки, не несущей никакого смысла. Я не в коем случае не придираюсь. Просто стремлюсь подогнать код под свою сугубо специфическую задачу. Надеюсь на понимание. El Sanchez, Если не сложно, поскажите какие изменения можно внести дополнительно. |
Отправлено: 02:25, 25-12-2010 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Как получить название группы Администраторов в переменную. | volk1234 | Скриптовые языки администрирования Windows | 24 | 02-04-2015 15:48 | |
Подскажите название игры | silalex | Игры | 1 | 06-05-2010 14:37 | |
[решено] Название на ссылках | MiXalich | Хочу все знать | 5 | 15-07-2008 15:33 | |
название компьютера, где? | slaine | Microsoft Windows 95/98/Me (архив) | 8 | 18-04-2006 17:31 | |
Название дисков | Falcon1 | Microsoft Windows 2000/XP | 6 | 07-06-2003 15:20 |
|