![]() |
Получить название процессора
Приветствую участников форума!
Есть задача: Имеется бат-файл типа: wmic cpu get name >cpu.txt Задачу он свою выполняет. Сохраняет нужную мне информацию в текстовом файле. Но меня не устраивает кодировка получившегося текстовика (Юникод). Надо обычную Windows-кодировку.... И хотелось бы сделать его дополнительное редактирование прямо этим же батником: убрать верхнюю строчку и оставить только вторую. И третье условие: батник должен запускаться на многих машинах со съёмного жёсткого диска и сохрянять свой текстовик прямо на съмный носитель. Текстовый файл, который получается: Name <cpuname> Текстовый файл, который нужен: <cpuname> Т.е. командой батника необходимо убрать верхнюю строку текстового файла. Надеюсь, понятно изложил суть проблемы... извиняюсь за корявость.... В программировании не особо разбираюсь. Жду помощи) |
Попробуйте так:
Код:
For /F "tokens=* delims=" %%j In ('wmic cpu get name') Do Echo %%j>cpu.txt |
Цитата:
|
Цитата:
Цитата:
|
gora, он хочет, чтобы на выходе получился файл, кодировка которого ANSI(1251). C вашего позволения:
Код:
@Echo Off |
Цитата:
|
Цитата:
|
И вот я наконец-то дома)
gora, Я проверил Ваш код на 3-х машинах. На первой всё получилось просто отлично! Я даже обрадовался тому, что всё получилось без использования команд конвертирования. Но попробовав ещё на двух увидел кракозябры. На одном под кракозябрами скрывалось название процессора, а на другом такая строчка: Режим вывода команд на экран (ECHO) включен. Переводил шрифтом Terminal. В чём может быть причина такой непостоянности? El Sanchez, Ваш код пробовал пока только на одной машине (на своей) и о чудо! Нужная мне программа скушала полученный файл! Зе бест! Завтра попробую испытать ещё на паре компов. И ещё один вопрос: Можно ли используя Ваш код создать один файл .bat по такому же принципу получая информацию о других железках? (например: инфо о cpu в один файл сохранялась, о материнке в другой, но команды шли от одного батника) PS: Как здесь благодарности раздаются? |
Цитата:
|
kiripanda, Интересно... Но другого способа вытаскивания из cmd информации о системе вроде как нет...
|
%PROCESSOR_IDENTIFIER% (но придётся пересчитывать Family-Model-Stepping в название)
или cpuz |
kiripanda, C:\Documents and Settings\Manager>%processor_identifier%
"x86" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. to ALL Существует команда dxdiag /t <имя_файла> в результате которой получается текстовый файл с полной информацией о системе. Как с помощью батника вытащить из него только нужные строки в отдельные текстовики с нужной кодировкой. Подскажите синтаксис команд. Мне бы принцип понять.... |
Цитата:
|
AD1DA5
Код:
dxdiag.exe /t dxdiag.tmp Petya V4sechkin, спасибо, получилось Цитата:
|
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) Можно будет добавить в этот код ещё несколько переменных, чтобы не создавать отдельный батник для каждого устройства? Заранее спасибо. |
Код:
@echo off |
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 и кончая "Семёркой", не зависимо от битности. Если, то, что я перечислил возможно сделать с помощью командной строки, то это решит все проблемы и тему можно будет закрывать. Плохо разбираюсь в матчасти и возможно сильно захамил с требованиями, но всё же надеюсь :-) |
AD1DA5, вариант скрипта, сохраняющего инфу в кодировке Windows-1251.
Код:
@Echo Off |
El Sanchez, а можно сделать с опросом всех компьютеров локальной сети и записью параметров в отдельную папку для каждой машины?
|
El Sanchez, Класс! Отличный код. Но только мне пришлось его немного исправить под себя:
Код:
@Echo Off 1) список сетевых адаптеров не полон( У меня на тестовой машине их стоит 4 штуки... а скрипт выдал мне только одну реальную + Hamachi 2) в список видеокарточек затесался Radmin... не в тему... 3) объём памяти оперативки и видеокарточки в байтах... не особо наглядно, но скорее всего тут уж ничего не поделаешь. Придётся именно эту информацию брать по рецепту камрада kiripanda... 4) файл screenres.txt выглядит несколько странно: Код:
1280 x 1024 x 4294967296 цв., 60 Hz Я не в коем случае не придираюсь. Просто стремлюсь подогнать код под свою сугубо специфическую задачу. Надеюсь на понимание. El Sanchez, Если не сложно, поскажите какие изменения можно внести дополнительно. |
Цитата:
Код:
…Win32_NetworkAdapter Where ^"AdapterTypeId^=0 And NetConnectionStatus^=2^… Цитата:
Код:
…Where Name ^<^> ^"bla-bla-bla^"… Цитата:
|
Iska
Цитата:
Код:
For /F "Tokens=1,3 Delims==:" %%A In ('WMIC path Win32_NetworkAdapter get Caption /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "%%B" "%%B" "net.txt" Также обнаружил, что не работает строка про HDD: Код:
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_DiskDrive get Caption /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "%%B" "%%B" "hdd.txt" Цитата:
|
Цитата:
Цитата:
Код:
wmic.exe DiskDrive get Caption, Model, InterfaceType Цитата:
|
Цитата:
Код:
... Do Call :_Func "%%A" "%%C, %%B Hz" "%%C, %%B Hz" "screenres.txt" Цитата:
Цитата:
Цитата:
Код:
wmic DiskDrive get /?:full |
Цитата:
|
Всем здравствуйте!
Подскажите как сделать так чтобы используя этот скрипт информация о компьютере записывалась не в разные файлы, а в один с именем допустим %computername%.txt ?? |
Сам разобрался может кому будет полезно:
Код:
@Echo off |
Добрый день, подскажите, как сделать так, чтобы dxdiag запустить, сохранить всю информацию в файле dxdiag.txt на рабочем столе и закрыть все открывшиеся в следствии этих действий окна и программы.
Т.е. чтобы нажал на бат файл и у тебя на рабочем столе появился обновлённый полный файл dxdiag.txt |
mi_hay, А если почитать справку?
Код:
dxdiag /? |
Время: 01:07. |
Время: 01:07.
© OSzone.net 2001-