|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - BAT'ник собирающий информацию о системе |
|
CMD/BAT - BAT'ник собирающий информацию о системе
|
Новый участник Сообщения: 10 |
Нужно сделать батник, который будет собирать нужную информацию о системе и записывать её в ТХТ
Собрать нужно вот что: IP внешний (реализовал) Логин под которым сейчас зашел в систему (реализовал) Название ОС (реализовал) Общее количество пользователей в системе (реализовал) Название процессора (реализовал) Количество ядер (реализовал) Частота процессора (реализовал) Количество ОЗУ (реализовал) Дата чека (реализовал) UPTIME системы (работает только отдельным BAT'ником) Тип учетной записи Админская или юзерская (работает только отдельным BAT'ником) Порыскав форум и гугл удалось почти всё реализовать самому, только есть не большие проблемы Вот сам код РАБОЧЕГО батника, он определяет ВНЕШНИЙ ip адрес, собирает всю необходимую информацию и записывает всё в ТХТ с именем вашего IP (пример 178.254.125.22.txt) @echo off :::::::::::::: ::Узнать IP :: :::::::::::::: echo option explicit>>ip.vbs echo dim http:set http=createobject("msxml2.serverxmlhttp")>>ip.vbs echo http.open "get","http://icanhazip.com",false>>ip.vbs echo http.send>>ip.vbs echo wscript.stdout.write http.responsetext>>ip.vbs echo set http=nothing>>ip.vbs cscript //b ip.vbs>info.txt del ip.vbs ::::::::::::::::::::::::::: :: Записать ЛОГИН в файл :: ::::::::::::::::::::::::::: echo LOGIN: %UserName% >> info.txt echo ********************************************** >> info.txt :::::::::::::::::::::::::: :: Записать название ОС :: :::::::::::::::::::::::::: if defined ProgramFiles(x86) (set oper=x64) else (set oper=x32) FOR /F "tokens=1* delims==" %%A IN ('wmic os get caption /Format:List ^| FIND "="') DO set "s=%%~B" echo █ OS: %s% %oper% >> info.txt ::::::::::::::::::::::::::::::::::::::: :: Записать количество пользователей :: ::::::::::::::::::::::::::::::::::::::: For /F "tokens=2 Delims==" %%J In ('wmic os get numberofusers /Value^|FindStr .') Do set "us=%%J" echo █ NUMBER OF USERS: %us% >> info.txt :::::::::::::::::::::::::::::::::: :: Записать название процессора :: :::::::::::::::::::::::::::::::::: For /F "tokens=2 Delims==" %%J In ('WMIC CPU Get Name /Value^|FindStr .') Do set "CPU=%%J" echo █ CPU: %CPU% >> info.txt :::::::::::::::::::::::::::::: :: Записать количество ядер :: :::::::::::::::::::::::::::::: FOR /F "tokens=1* delims==" %%A IN ('WMIC CPU Get numberofcores /Format:List ^| FIND "="') DO set "core=%%~B" echo █ CORE: %core% >> info.txt :::::::::::::::::::::::::::::::::::::::::: :: Записать тактовую частоту процессора :: :::::::::::::::::::::::::::::::::::::::::: FOR /F "tokens=1* delims==" %%A IN ('WMIC CPU Get currentclockspeed /Format:List ^| FIND "="') DO set "s=%%~B" echo █ FREQUENCY: %s% Mhz >> info.txt ::::::::::::::::::::::::::::: :: Записать количество RAM :: ::::::::::::::::::::::::::::: FOR /F "tokens=1* delims==" %%A IN ('WMIC os get totalvisiblememorysize /Format:List ^| FIND "="') DO set "su=%%~B" set /a sss=%su%/1024 echo █ RAM: %sss% %uu% Mb >> info.txt :::::::::::::::::::::::: :: Записать дату чека :: :::::::::::::::::::::::: echo █ CHECK TIME: %DATE% (%TIME%) >> info.txt :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::Прочитать IP из файла выше и создать с именем IP txt файл :: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal EnableDelayedExpansion set /p "line="< "info.txt" ren info.txt %line%.txt Нашел в интернете такой код, в отдельном BAT'нике он хорошо работает и показывает тип учетной записи, а если добавляю его в основной код, то ничего не работает @echo off setlocal enableextensions enabledelayedexpansion for /f "usebackq delims=" %%i in ( `wmic.exe Group where "LocalAccount=TRUE AND SID = 'S-1-5-32-544'" get Name /value ^| find.exe /i "Name"` ) do set sAdminGroup%%i if defined sAdminGroupName ( echo [%sAdminGroupName%] >> info.txt ) endlocal exit /b 0 в отдельном BAT'нике он работает, если добавить в основной код, то тоже работает, но в TXT записывает почему то 2 раза аптайм, это не красиво и нужно бы с этим разобраться ::UPTIME @echo off for /f "delims=" %%a in ('wmic OS Get LastBootUpTime ^| find "."') do set up=%%a for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a set beg=%up:~0,4%-%up:~4,2%-%up:~6,2%T%up:~8,2%-%up:~10,2%-%up:~12,2%-%up:~15,3% set end=%dt:~0,4%-%dt:~4,2%-%dt:~6,2%T%dt:~8,2%-%dt:~10,2%-%dt:~12,2%-%dt:~15,3% call :TimeDifference uptime %end% %beg% echo %beg% echo %end% echo UPTIME: %uptime% >> info.txt :TimeDifference Return_Variable Start_Date_Time Stop_Date_Time SetLocal EnableExtensions EnableDelayedExpansion For /F "tokens=1-14 delims=T/:-., " %%a in ("%~2 %~3") Do ( Set "h2=0%%d" & Set "h3=0%%k" & Set "n2=%%g00" & Set "n3=%%n00" Set /A "y2=%%a, m2=1%%b-100, d2=1%%c-100, h2=1!h2:~-2!-100, i2=1%%e-100, s2=1%%f-100, n2=1!n2:~0,3!-1000" Set /A "y3=%%h, m3=1%%i-100, d3=1%%j-100, h3=1!h3:~-2!-100, i3=1%%l-100, s3=1%%m-100, n3=1!n3:~0,3!-1000" ) Set /A "t2=((h2*60+i2)*60+s2)*1000+n2, t3=((h3*60+i3)*60+s3)*1000+n3" Set /A "a=(14-m2)/12, b=y2-a, j2=(153*(12*a+m2-3)+2)/5+d2+365*b+b/4-b/100+b/400" Set /A "a=(14-m3)/12, b=y3-a, j3=(153*(12*a+m3-3)+2)/5+d3+365*b+b/4-b/100+b/400" Set /A "d=j3-j2, t=t3-t2" If %d% LEQ 0 (If %d% LSS 0 (Set /A "d=j2-j3, t=t2-t3") Else If %t% LSS 0 (Set /A "t=t2-t3")) If %t% LSS 0 (Set /A "t+=(1000*60*60*24), d-=1") Set /A "n=t %% 1000, t/=1000, s=t %% 60, t/=60, m=t %% 60, t/=60" EndLocal & Set "%~1=%d% days, %t% hours, %m% minutes" pause>nul 196.223.213.23 LOGIN: ROOT ACCOUNT TYPE: [Administrator] ********************************************** █ OS: Microsoft Windows 7 Ultimate x64 █ NUMBER OF USERS: 1 █ CPU: Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz █ CORE: 4 █ FREQUENCY: 3201 Mhz █ RAM: 8097 Mb █ CHECK TIME: 21.08.2017 (13:36:57,23) █ UPTIME: 0 days, 2 hours, 34 minutes ********************************************** |
|
Отправлено: 13:50, 21-08-2017 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Забыл уточнить, все команды естественно нашел в интернете и собрал в один BAT'ник, сам в этом практически ничего не понимаю, поэтому не пинайте)
И еще такая проблема: сам код сначала создает файл info.txt и записывает в него всю информацию, а в конце переименовывает info.txt в IP_сервера (расширение почему-то не пишется). Как исправить? |
Отправлено: 13:59, 21-08-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Bat-ник создания текстовика | hancogruss | Скриптовые языки администрирования Windows | 6 | 19-09-2016 01:19 | |
CMD/BAT - Bat'ник, который создает bat'ник и RDP | ivanxam | Скриптовые языки администрирования Windows | 1 | 22-01-2016 14:10 | |
PowerShell - Скрипт, собирающий информацию о открытых файлах XLS | rudimko | Скриптовые языки администрирования Windows | 3 | 09-10-2012 19:17 | |
Разное - [решено] Переделайте c++ в bat-ник | VokaMut | Программирование и базы данных | 5 | 10-08-2011 18:08 | |
bat'ник | mikola1983 | Хочу все знать | 10 | 03-08-2007 10:46 |
|