Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Помогите переделать OEMINFO.cmd в Автоит скрипт

Ответить
Настройки темы
Помогите переделать OEMINFO.cmd в Автоит скрипт

Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Проблема такая же как и описанная мною в теме .Опять виновник кард рийдер. Только сложнее. Нужно переделать вот это:

HTML код: Выделить весь код
@echo off rem магические слова :) setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION rem <--- ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ ---> rem полный путь и имя файла oeminfo set OEMFILE=%SYSTEMROOT%\system32\oeminfo.ini rem использовать ли реестровый метод для составления списка апдейтов (1 - да; 0 - нет) set REGMODE=0 rem маркерный файл для определения cdrom-а set TAGFILE=WIN51 rem производитель set MANUFACTURER=Pozia rem модель set MODEL=Windows XP Pozia Edition 2009 rem кол-во апдейтов в одной строке (по ум. 6) set UPMAX=6 rem по какой длине выравнивать названия обновлений (по ум. 8) set UPNAMEL=8 rem вписывать или нет серийник в файл oeminfo (1 - да; 0 - нет) set KEY=1 rem сделать ли видимым серийник в окне "Сведения о поддержке" (1 - да; 0 - нет) rem невидимость серийника означает, что он не будет виден в окне "Сведения о поддержке", но в файле OEMINFO он будет в строке SerialNo= set KEYISVISIBLE=1 rem присвоение переменной CDROM буквы cdrom-а, определенной по маркерному файлу rem (CDROM-ом считается первый найденный дисковод с маркерным файлом) for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (if exist "%%d:\%TAGFILE%" set CDROM=%%d:&& goto metka) :metka rem каталог с апдейтами и маска для отбора файлов в каталоге апдейтов (*.* - все; *.cat - только каталоги безопасности; KB*.* - только начинающиеся с KB и т.п.) if defined CDROM ( set UPDATESDIR=%CDROM%\I386\SVCPACK set UPDATESMASK=*.* ) else ( rem определяем переменную CDROM как каталог на HDD rem (если файл oeminfo.cmd у Вас будет не в каталоге $OEM$, rem то измените число обрезаемых от переменной справа символов с 7 на требуемое Вам) set CDROM=%~dp0 set CDROM=!CDROM:~0,-7! set UPDATESDIR=%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} set UPDATESMASK=KB*.* ) rem Определение версии REG.EXE for /F "tokens=1" %%j in ('reg 2^>nul') do if "%%j"=="REG" set REGEXE=rus rem Обеспечение правильности отработки мультизагрузочного CD/DVD if exist "%CDROM%\I386\winn?.sif" ( set WINNTSIF=%CDROM%\I386\winn?.sif ) else ( if defined REGEXE ( for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v SourcePath') do set SrcP=%%j ) else ( for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v SourcePath') do set SrcP=%%j ) if exist "!SrcP!\winn?.sif" set WINNTSIF=!SrcP!\winn?.sif ) rem <--- ОКОНЧАНИЕ ОБЪЯВЛЕНИЯ ПЕРЕМЕННЫХ ---> rem язык (419 - рус.), а также название, пакет обновлений, версия и сборка ОС rem !ВАЖНО! - в кач-ве разделителя нужно указать только символ табуляции для rem русской версии REG.EXE и только пробел для английской if defined REGEXE ( for /F "tokens=3 delims= " %%j in ('reg query "HKCU\Control Panel\International" /v Locale') do set lang=%%j for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName') do set PN=%%j for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDVersion') do set CSDV=%%j for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion') do set CV=%%j for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildLab') do set BUILD=%%j ) else ( for /F "tokens=3 delims= " %%j in ('reg query "HKCU\Control Panel\International" /v Locale') do set lang=%%j for /F "tokens=3* delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName') do set PN=%%j %%k for /F "tokens=3* delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDVersion') do set CSDV=%%j %%k for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion') do set CV=%%j for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildLab') do set BUILD=%%j ) rem Анализ командной строки for /F %%j in ('echo.%* ^| find /i /c "/k"') do if %%j GTR 0 set KEY=1 for /F %%j in ('echo.%* ^| find /i /c "/v"') do if %%j GTR 0 set KEYISVISIBLE=1 for /F %%j in ('echo.%* ^| find /i /c "/r"') do if %%j GTR 0 set REGMODE=1 rem Т.к. используется символ ">", то существующий файл OEMFILE будет перезаписан; rem т.о. нет нужды его предварительно удалять echo [General]> "%OEMFILE%" echo Manufacturer=%MANUFACTURER%>> "%OEMFILE%" echo Model=%MODEL%>> "%OEMFILE%" rem Достаем из winn?.sif серийный номер rem Это работает независимо от вида записи ProductKey=XXXX или ProductKey = XXXX (с пробелами) if defined WINNTSIF ( if %KEY% == 1 ( for /F "tokens=3 delims==] " %%j in ('find /I /N "ProductKey" "%WINNTSIF%"') do set PK=%%j ) ) rem вспомогательные переменные set i=1 set l=0 set c=0 set n=0 if %REGMODE% == 1 ( rem Все обновления, установленные в системе rem (отбираются по подветкам; повторяющиеся эл-ты исключаются) for /F "tokens=5* delims=\" %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Updates" /s ^| findstr /i /v "REG_ FileList"') do ( if %ERRORLEVEL%==0 ( for /F "usebackq tokens=3 delims=\" %%m in ('%%j\%%k') do ( rem !ВАЖНО! - в следующей строке после %%m должно быть не меньше UPNAMEL-1 пробелов rem (это нужно для выравнивания списка обновлений при наличии апдейтов с короткими названиями - WGA, IE7) set tmp=%%m set tmp=!tmp:~0,%UPNAMEL%! set kb[!tmp!]=!tmp:~2,6! ) rem учет обновлений .Net 2.0 for /F "tokens=2 delims=\" %%m in ('echo %%j\%%k^| findstr /i /c:" .NET"') do ( set tmp=%%m set tmp=!tmp:~0,%UPNAMEL%! set kb[!tmp!]=!tmp:~2,6! ) ) ) rem Обновления, перечисленные в ветке Uninstall (начинающиеся с KB + 6 цифр) for /F "tokens=7 delims=\" %%m in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" ^| findstr /i "\<KB[0-9][0-9][0-9][0-9][0-9][0-9]"') do ( set tmp=%%m set tmp=!tmp:~0,%UPNAMEL%! set kb[!tmp!]=!tmp:~2,6! ) rem Определяем общее количество обновлений for /F %%j in ('set kb[') do set /A n+=1 call :suppinfo rem Сортировка и перенос списка обновлений в файл, указанный в переменной OEMFILE for /F "tokens=2 delims=[]" %%j in ('set kb[ ^| sort') do (set kbname=%%j&& call :myprint) ) else ( rem Определение общего кол-ва файлов в каталоге апдейтов соотв-щих маске for /F %%j in ('dir /b /a:-d "%UPDATESDIR%\%UPDATESMASK%"') do set /A n+=1 call :suppinfo rem Список апдейтов (имена всех файлов без расширений; имена выравниваются по длине до UPNAMEL символов) for /F "tokens=1 delims=." %%j in ('dir /b /a:-d "%UPDATESDIR%\%UPDATESMASK%"') do (set kbname=%%j&&set kbname=!kbname! &&set kbname=!kbname:~0,%UPNAMEL%!&& call :myprint) ) rem Выход из этого пакетного файла. rem Команда GOTO принимает в качестве метки перехода строку :EOF, которая вызывает rem передачу управления в конец текущего пакетного файла. Это позволяет легко rem выйти из пакетного файла без определения каких-либо меток. (из справки по goto) goto :EOF :myprint if !c! == 0 ( set str=!kbname! ) else ( set str=!str! !kbname! ) set /A c+=1 if !c! == %UPMAX% ( echo Line!i!=!str!>> "%OEMFILE%" set /A i+=1 set /A l+=1 set str= set c=0 set /A tmp=n-l*UPMAX ) else ( if %n% LSS %UPMAX% ( if !c! == %n% ( echo Line!i!=!str!>> "%OEMFILE%" ) ) if !tmp! LSS %UPMAX% ( if !c! == !tmp! ( echo Line!i!=!str!>> "%OEMFILE%" ) ) ) goto :EOF :suppinfo if defined PK ( if %KEYISVISIBLE% == 0 ( echo [OEMSpecific]>> "%OEMFILE%" echo SerialNo=%PK%>> "%OEMFILE%" ) ) ) echo [Support Information]>> "%OEMFILE%" if %lang% == 00000419 ( echo Line!i!=ОС:%PN:Microsoft=% %CSDV:Service Pack=SP% версия %CV% сборка %BUILD%>> "%OEMFILE%" ) else ( echo Line!i!=OS:%PN:Microsoft=% %CSDV:Service Pack=SP% version %CV% build %BUILD%>> "%OEMFILE%" ) set /A i+=1 if defined PK ( if %KEYISVISIBLE% == 1 ( if %lang% == 00000419 ( echo Line!i!=Ключ продукта: %PK%>> "%OEMFILE%" ) else ( echo Line!i!=Product Key: %PK%>> "%OEMFILE%" ) set /A i+=1 ) ) echo Line!i!=>> "%OEMFILE%" set /A i+=1 rem Дата и время инсталляции ОС в формате DD.MM.YYYY (hh:mm), например 20.05.2005 (14:37) rem !!!!!!!!!!!!!!!!!!!!!!!!!!! rem Вы можете добавить дополнительную инф-цию для отображения в окне "Сведения о поддержке" rem в рус. и/или анг. версии (для вставки пустой строки исп-те команду echo Line!i!=>> "%OEMFILE%" rem ; и не забывайте ставить set /A i+=1 перед каждой строкой) rem !!!!!!!!!!!!!!!!!!!!!!!!!!! for /F %%t in ('time/T') do set T=%%t if %lang% == 00000419 ( echo Line!i!=-------------------------------------------------------------------------------->> "%OEMFILE%" set /A i+=1 echo Line!i!=Дата и время установки: %date% ^(%T%^)>> "%OEMFILE%" set /A i+=1 echo Line!i!=-------------------------------------------------------------------------------->> "%OEMFILE%" set /A i+=1 echo Line!i!=По любым вопросам и предложениям можно обратиться:>> "%OEMFILE%" set /A i+=1 echo Line!i!=Velcom: 1-111-111-11-11>> "%OEMFILE%" set /A i+=1 echo Line!i!=MTC: 1-111-111-11-11>> "%OEMFILE%" set /A i+=1 echo Line!i!=ICQ: 111-111-111>> "%OEMFILE%" set /A i+=1 echo Line!i!=Mail: 1111@111111.11>> "%OEMFILE%" set /A i+=1 echo Line!i!=111111 11111111 1111111>> "%OEMFILE%" set /A i+=1 echo Line!i!=-------------------------------------------------------------------------------->> "%OEMFILE%" set /A i+=1 echo Line!i!=>> "%OEMFILE%" set /A i+=1 echo Line!i!=Установленные компоненты и обновления ^(%n%^):>> "%OEMFILE%" ) else ( echo Line!i!=Installation ^(updation^) date and time: %date% ^(%T%^)>> "%OEMFILE%" set /A i+=1 echo Line!i!=>> "%OEMFILE%" rem Example for adding custom information rem set /A i+=1 rem echo Line!i!=Your information>> "%OEMFILE%" set /A i+=1 echo Line!i!=Installed Components and Updates ^(%n%^):>> "%OEMFILE%" ) set /A i+=1 echo Line!i!=>> "%OEMFILE%" set /A i+=1 goto :EOF

Для тех кто не знает командный файл с данным содержанием вносит информацию OEM. В данном случае - версию винды, дату и время установки, личную информацию, количество обновлений и какие именно установлены в системе. В общем нужен очень этот командный файл в Автоит версии.

Огромная надежда на решение этого вопроса на Вас, уважаемый amel27.

Отправлено: 20:44, 03-03-2009

 


Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Помогите переделать OEMINFO.cmd в Автоит скрипт

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как назначить букву DVD приводу с помощью Автоит подобно как CMD? Pozia AutoIt 14 15-01-2010 19:01
CMD/BAT - [решено] Помогите запустить CMD-файл из CMD-файла с параметрами Oleg48 Скриптовые языки администрирования Windows 2 18-11-2009 11:08
VBS/WSH/JS - Помогите переделать скрипт LAZ1488 Скриптовые языки администрирования Windows 3 18-09-2009 11:02
Скрипт, который можно переделать под MC(rap) баттл KingLink Вебмастеру 5 10-09-2009 02:50
Помогите пожалуйста не срабатывает команда из*cmd файла запускаемого из RanOnceEx.cmd vovchiku Автоматическая установка Windows 2000/XP/2003 6 25-09-2007 23:38




 
Переход