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

Показать сообщение отдельно

Аватара для YuriPet

Ветеран


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

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


А я вот на днях слегка доработал Доработанный вариант файла oeminfo.cmd Sanja Alone
Надеюсь - не обидится
Теперь его можно использовать не только при установке системы с CD/DVD но и с HDD, а также для обновления информации.
Код: Выделить весь код
@echo off

rem <--- ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ --->
rem Полный путь и имя файла oeminfo
set OEMFILE=%SYSTEMROOT%\system32\oeminfo.ini
rem Маркерный файл для определения cdrom-а
set TAGFILE=WIN51
rem Полный путь к дистрибутиву при установке с HDD 
set HDDPATH=D:\WinXP\XP_HDD
rem Производитель
set MANUFACTURER=Автор версии: YuriPet
rem Модель
set MODEL=WinXP Pro SP2 Plus
rem Кол-во апдейтов в одной строке
set UPMAX=6
rem Присвоение переменной CDROM буквы 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:
rem Маска для отбора файлов в каталоге апдейтов (*.* - все; *.cat - только каталоги безопасности; KB*.* - только начинающиеся с KB и т.п.)
set UPDATESMASK=KB*.*
rem Каталог с апдейтами
if not defined CDROM (
	set UPDATESDIR=%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
) else (
	set UPDATESDIR=%CDROM%\I386\SVCPACK
)
rem Если будем обновлять информацию - снимаем атрибуты файлов
if %UPDATESDIR%==%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} (
	ATTRIB -H -S -R %UPDATESDIR%\%UPDATESMASK%
)
rem Обеспечение правильности отработки мультизагрузочного CD/DVD
if exist %CDROM%\i386\winna.sif (
	set WINNTSIF=%CDROM%\i386\winna.sif
) else (
	if exist %CDROM%\i386\winnt.sif (
		set WINNTSIF=%CDROM%\i386\winnt.sif
	)
)
rem Обеспечение обработки winnt.sif при установке с HDD
if not defined WINNTSIF (
	set WINNTSIF=%HDDPATH%\I386\winna.sif
)
rem <--- ОКОНЧАНИЕ ОБЪЯВЛЕНИЯ ПЕРЕМЕННЫХ --->

rem Т.к. используется символ ">", то существующий файл oeminfo.ini будет перезаписан
rem Т.о. нет нужды его предварительно удалять
echo [General]> "%OEMFILE%"
echo Manufacturer=%MANUFACTURER%>> "%OEMFILE%"
echo Model=%MODEL%>> "%OEMFILE%"
echo [Support Information]>> "%OEMFILE%"
echo Line1=У вас установлена система Windows XP Professional Edition SP2>> "%OEMFILE%"
echo Line2=с интегрированными пакетами обновлений программного>> "%OEMFILE%"
echo Line3=обеспечения и системы защиты.>> "%OEMFILE%"
echo Line4=>> "%OEMFILE%"

rem Если существует winnt.sif (winna.sif), достаем из него серийный номер
rem Это работает независимо от вида записи ProductKey=XXXX или ProductKey = XXXX (с пробелами)
if exist %WINNTSIF% (
for /F "tokens=3 delims==] " %%j in ('find /I /N "ProductKey" %WINNTSIF%') do (
    echo Line5=Ключ продукта: %%j>> "%OEMFILE%"
    echo Line6=>> "%OEMFILE%"
)
    echo Line7=На момент инсталляции системы - %date% %time:~0,-6%>> "%OEMFILE%"
    set i=7
)

rem Если WINNTSIF не существует (обновление информации)
IF NOT EXIST %WINNTSIF% (
   echo Line5=По состоянию на %date% %time:~0,-6%>> "%OEMFILE%"
   SET i=5
)

set /A i+=1
echo Line%i%=установлены следующие обновления (после SP2):>> "%OEMFILE%"
set /A i+=1
echo Line%i%=>> "%OEMFILE%"
set /A i+=1

rem Определение общего кол-ва файлов в каталоге апдейтов соотв-щих маске (для рус. и англ. Windows)
for /F "usebackq tokens=1" %%m in (`dir %UPDATESDIR%\%UPDATESMASK% ^| find /i "file(s)"`) do (set numfiles=%%m)
if not defined numfiles (
for /F "usebackq tokens=1" %%m in (`dir %UPDATESDIR%\%UPDATESMASK% ^| find /i "д*©«®ў"`) do (set numfiles=%%m)
)

rem Вспомогательные переменные
set l=0
set c=0

rem Список апдейтов (имена всех файлов без расширений)
rem (без ключевого слова usebackq команда dir будет воспринята как 
rem имя файла для подстановки в цикл FOR с последующей выдачей сообщения 
rem об отсутствии такого файла в текущем каталоге).
for /F "usebackq tokens=1 delims=." %%j in (`dir /B %UPDATESDIR%\%UPDATESMASK%`) do ((set kbname=%%j) & (call :myprint))

rem Возвращаем аттрибут файлов
if %UPDATESDIR%==%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} (
ATTRIB +S %UPDATESDIR%\%UPDATESMASK%
)
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=numfiles-l*UPMAX
) else (
	if %numfiles% LSS %UPMAX% (
		if %c% == %numfiles% (
			echo Line%i%=%str%>> "%OEMFILE%"
		)
	)
	if %tmp% LSS %UPMAX% (
		if %c% == %tmp% (
			echo Line%i%=%str%>> "%OEMFILE%"
		)
	)
)
Важно!
В этом пакетном файле используются символы кириллицы. Следовательно, для правильного её отображения в окне "Сведения о поддержке", сохранять файл необходимо в кодировке Windows (1251).
Обратите внимание!
В строке №81 слово "файлов" ("д ©«®ў") должно быть в кодировке DOS (866).

-------

Моим первым "персональным компьютером" был(а) "МИР-1"!


Отправлено: 02:45, 08-09-2006 | #42