8ash8
18-11-2015, 15:28
Добрый день, есть необходимость создать батник для сбора информации о ПК, в процессе написания столкнулся с некоторыми проблемами, буду благодарен если поможете разобраться.
Мой код:
@echo on
chcp 1251 >nul
color 70
echo COMPUTER NAME: %computername% >> %date%_%computername%.txt
For /F "Tokens=1* " %%A In ('WMIC OS GET CSDVersion^, Caption^|FindStr .^|More +1^|FindStr /n .') Do echo OS: %%B >> %date%_%computername%.txt
For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC OS GET OSArchitecture /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do echo ARCHITECTURE: %%B >> %date%_%computername%.txt
For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC OS GET InstallDate /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do echo INSTALL_DATE: %%B >> %date%_%computername%.txt
WMIC OS GET InstallDate |FindStr : >> %date%_%computername%.txt
For /F "Tokens=1,3* delims=,:" %%A IN ('WMIC OS GET TotalVisibleMemorySize /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do echo RAM: %%B Kb >> %date%_%computername%.txt
For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC CPU GET Name^ /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do echo CPU: %%B >> %date%_%computername%.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 echo NETWORK CARD: %%B >> %date%_%computername%.txt
For /F "Tokens=1* Delims==:" %%A In ('WMIC path Win32_NetworkAdapter Where ^"AdapterTypeId^=0 And NetConnectionStatus^=2^" GET MACAddress^|FindStr .^|More +1^|FindStr /n .') Do echo MACAddress: %%B >> %date%_%computername%.txt
For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC BIOS GET Manufacturer^,Name /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do echo BIOS: %%B, %%C >> %date%_%computername%.txt
For /F "Tokens=1,3 Delims==:" %%A In ('WMIC path Win32_SoundDevice GET Name /VALUE^|FindStr .^|FindStr /n .') Do echo SOUND CARD: %%B >> %date%_%computername%.txt
For /F "Tokens=1,3 Delims==:" %%A In ('WMIC DISKDRIVE Where InterfaceType^=^'IDE^' GET Model /VALUE^|FindStr .^|FindStr /n .') Do echo HDD: %%B >> %date%_%computername%.txt
For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC path Win32_VideoController GET Name^,AdapterRAM /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do echo VIDEOCARD: %%C, %%B bytes RAM >> %date%_%computername%.txt
pause
в результате выдает:
COMPUTER NAME: R2D2
OS: Windows 7 Professional Service Pack 1
ARCHITECTURE: 32-bit
INSTALL_DATE: 20150311103240.000000+180
RAM: 3145272 Kb
CPU: Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz
NETWORK CARD: Ђ¤*ЇвҐа ¬*ЈЁбва*«м*®© бҐвЁ ўЁавг*«м*®© ¬*иЁ*л (Њ*©Єа®б®дв) #6
MACAddress: 00:15:5D:C4:C0:00
BIOS: American Megatrends Inc., BIOS Date: 05/23/12 17:15:53 Ver: 09.00.06
HDD: Virtual HD ATA Device
HDD: Virtual HD ATA Device
VIDEOCARD: , ‚Ё¤Ґ®гбва®©бвў® иЁ*л VMBus (Њ*©Єа®б®дв) bytes RAM
1) Не могу понять почему при выгрузке не меняется кодировка с 866 на 1251, хотя chcp 1251 >nul в начале батника указываю.
2) Подскажите как произвести форматирование выгружаемых данных в строке INSTALL_DATE: с 20150311103240.000000+180 на 2015.03.11 (заменить выгрузку строки не из WMIC а из sysinfo не предлагать)
3) Как перевести выгружаемые данные в строке RAM из Кb в Мb. Побывал сделать через переменную:
For /F "Tokens=1,3* delims=,:" %%A IN ('WMIC OS GET TotalVisibleMemorySize /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do (
set /a Memory = "%%B/1024"
)
echo RAM: %Memory% Mb >> %date%_%computername%.txt
но безрезультатно, в чем косяк понять не могу.
4) Если кто знает есть ли возможность через WMIC выгрузить имена учетных записей на ПК (Windows 7). Буду благодарен за пример.
В результате хотелось бы чтобы информация выводилась в следующем формате:
COMPUTER NAME: R2D2
OS: Windows 7 Professional Service Pack 1
ARCHITECTURE: 32-bit
INSTALL_DATE: 2015.03.11
RAM: 3072 МB
CPU: Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz
NETWORK CARD: Адаптер магистральной сети виртуальной машины (Майкрософт) #6
MACAddress: 00:15:5D:C4:C0:00
BIOS: American Megatrends Inc., BIOS Date: 05/23/12 17:15:53 Ver: 09.00.06
HDD: Virtual HD ATA Device
HDD: Virtual HD ATA Device
VIDEOCARD: Видеоустройство шины VMBus (Майкрософт) bytes RAM
USER NAME:
Мой код:
@echo on
chcp 1251 >nul
color 70
echo COMPUTER NAME: %computername% >> %date%_%computername%.txt
For /F "Tokens=1* " %%A In ('WMIC OS GET CSDVersion^, Caption^|FindStr .^|More +1^|FindStr /n .') Do echo OS: %%B >> %date%_%computername%.txt
For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC OS GET OSArchitecture /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do echo ARCHITECTURE: %%B >> %date%_%computername%.txt
For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC OS GET InstallDate /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do echo INSTALL_DATE: %%B >> %date%_%computername%.txt
WMIC OS GET InstallDate |FindStr : >> %date%_%computername%.txt
For /F "Tokens=1,3* delims=,:" %%A IN ('WMIC OS GET TotalVisibleMemorySize /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do echo RAM: %%B Kb >> %date%_%computername%.txt
For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC CPU GET Name^ /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do echo CPU: %%B >> %date%_%computername%.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 echo NETWORK CARD: %%B >> %date%_%computername%.txt
For /F "Tokens=1* Delims==:" %%A In ('WMIC path Win32_NetworkAdapter Where ^"AdapterTypeId^=0 And NetConnectionStatus^=2^" GET MACAddress^|FindStr .^|More +1^|FindStr /n .') Do echo MACAddress: %%B >> %date%_%computername%.txt
For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC BIOS GET Manufacturer^,Name /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do echo BIOS: %%B, %%C >> %date%_%computername%.txt
For /F "Tokens=1,3 Delims==:" %%A In ('WMIC path Win32_SoundDevice GET Name /VALUE^|FindStr .^|FindStr /n .') Do echo SOUND CARD: %%B >> %date%_%computername%.txt
For /F "Tokens=1,3 Delims==:" %%A In ('WMIC DISKDRIVE Where InterfaceType^=^'IDE^' GET Model /VALUE^|FindStr .^|FindStr /n .') Do echo HDD: %%B >> %date%_%computername%.txt
For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC path Win32_VideoController GET Name^,AdapterRAM /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do echo VIDEOCARD: %%C, %%B bytes RAM >> %date%_%computername%.txt
pause
в результате выдает:
COMPUTER NAME: R2D2
OS: Windows 7 Professional Service Pack 1
ARCHITECTURE: 32-bit
INSTALL_DATE: 20150311103240.000000+180
RAM: 3145272 Kb
CPU: Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz
NETWORK CARD: Ђ¤*ЇвҐа ¬*ЈЁбва*«м*®© бҐвЁ ўЁавг*«м*®© ¬*иЁ*л (Њ*©Єа®б®дв) #6
MACAddress: 00:15:5D:C4:C0:00
BIOS: American Megatrends Inc., BIOS Date: 05/23/12 17:15:53 Ver: 09.00.06
HDD: Virtual HD ATA Device
HDD: Virtual HD ATA Device
VIDEOCARD: , ‚Ё¤Ґ®гбва®©бвў® иЁ*л VMBus (Њ*©Єа®б®дв) bytes RAM
1) Не могу понять почему при выгрузке не меняется кодировка с 866 на 1251, хотя chcp 1251 >nul в начале батника указываю.
2) Подскажите как произвести форматирование выгружаемых данных в строке INSTALL_DATE: с 20150311103240.000000+180 на 2015.03.11 (заменить выгрузку строки не из WMIC а из sysinfo не предлагать)
3) Как перевести выгружаемые данные в строке RAM из Кb в Мb. Побывал сделать через переменную:
For /F "Tokens=1,3* delims=,:" %%A IN ('WMIC OS GET TotalVisibleMemorySize /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do (
set /a Memory = "%%B/1024"
)
echo RAM: %Memory% Mb >> %date%_%computername%.txt
но безрезультатно, в чем косяк понять не могу.
4) Если кто знает есть ли возможность через WMIC выгрузить имена учетных записей на ПК (Windows 7). Буду благодарен за пример.
В результате хотелось бы чтобы информация выводилась в следующем формате:
COMPUTER NAME: R2D2
OS: Windows 7 Professional Service Pack 1
ARCHITECTURE: 32-bit
INSTALL_DATE: 2015.03.11
RAM: 3072 МB
CPU: Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz
NETWORK CARD: Адаптер магистральной сети виртуальной машины (Майкрософт) #6
MACAddress: 00:15:5D:C4:C0:00
BIOS: American Megatrends Inc., BIOS Date: 05/23/12 17:15:53 Ver: 09.00.06
HDD: Virtual HD ATA Device
HDD: Virtual HD ATA Device
VIDEOCARD: Видеоустройство шины VMBus (Майкрософт) bytes RAM
USER NAME: