Vadikan, запуск из cmd-файла (папка не имеет значения); ОС - XP SP3 (со всеми обновами) NTFS; права - админ.; диски: C: , D: , E: , F: , G: - все SCSI HDD, не разбитые на логические диски; H: , I: - DVD-шники; J: - виртуальный диск UltraISO.
Некоторые пояснения относительно скрипта: скрипт сделан для автоматизации процесса распаковки обновлений и их интеграции в дистрибутив MS Office 2003. Сейчас скрипт работает, но для первоначального размещения дистрибутива пришлось отказаться от использования временной папки C:\XPCD\$OEM$\$1\install\Applications\Office2003 и сразу копировать его с DVD-шника в конечную папку C:\Temp\New_Distrib, т.к. по названной в первом посте причине ни переименовать, ни удалить временную папку, ни перенести из неё обновлённый дистрибутив в конечную (целевую) папку C:\Temp\New_Distrib при использовании в конце скрипта команд CD, DEL и MOVE не удавалось.
Прошу не судить слишком строго, поскольку это мой первый опыт по созданию такого рода скрипта. И буду весьма признателен, если укажете в нём ещё какие-то недостатки.
P.S. Я знаю, что для моей цели на форуме уже есть готовый интегратор, но мне хотелось самостоятельно реализовать идею такого процесса в том виде, как я это понимаю. Тут хоть какой-то небольшой, но всё-таки мой собственный опыт.
Код:
TITLE Обновление дистрибутива MS Office 2003
CLS
@echo off
COLOR 1B
SetLocal EnableExtensions
SET SystemTemp=C:\Temp
SET FileTemp1="C:\Temp\Microsoft Office 2003 Setup(0001).txt"
SET FileTemp2="C:\Temp\Microsoft Office 2003 Setup(0002).txt"
SET FileTemp3="C:\Temp\Microsoft Office 2003 Setup(0001)_Task(0001).txt"
SET FileTemp4="C:\Temp\Microsoft Office 2003 Setup(0001)_Task(0002).txt"
SET OfficeTemp1=01_Office2003SP3-KB923618-FullFile-RUS-MAINSP3.msp
SET OfficeTemp2=01_Office2003SP3-KB923618-FullFile-RUS-OWC11SP3.msp
SET NamePath=C:\Temp\O2003updates
SET NamePathTemp=C:\Temp\O2003updates\Temp
SET Spisok1=%NamePathTemp%\Spisok1.txt
SET Spisok2=%NamePathTemp%\Spisok2.txt
SET LabelCD=Office11
REM SET DistrTemp=C:\XPCD\$OEM$\$1\install\Applications\Office2003
SET NewDistrib=C:\Temp\New_Distrib
SET ExceptionFile1=Office2003SP3-KB923618-FullFile-RUS.exe
REM SET ExceptionFile2=Ork.exe
ECHO.
ECHO Запущен процесс извлечения файлов из SP3 для MS Office 2003...
ECHO.
MD %NamePathTemp%
DIR /b Office2003SP3-KB923618-FullFile-RUS.exe >"%NamePathTemp%\Spisok1.txt"
FOR /F "Delims=" %%A In (%Spisok1%) DO (
MD %NamePathTemp%\%%~nA
%%A /Q /C /T:C:\Temp\O2003updates\Temp\%%~nA
REN %NamePathTemp%\%%~nA\MAINSP3.msp 01_Office2003SP3-KB923618-FullFile-RUS-MAINSP3.msp
REN %NamePathTemp%\%%~nA\OWC11SP3.msp 01_Office2003SP3-KB923618-FullFile-RUS-OWC11SP3.msp
DEL %NamePathTemp%\%%~nA\OWC102003SP3.msp
MOVE %NamePathTemp%\%%~nA\*.msp %NamePath%
RD /S /Q %NamePathTemp%\%%~nA
DEL %NamePathTemp%\Spisok1.txt
)
ECHO.
ECHO Извлечение файлов из SP3 выполнено успешно!
ECHO.
ECHO Извлекаются файлы из других файлов-обновлений для MS Office 2003....
ECHO.
Dir /b *.exe >"%Spisok2%"
For /F "Delims=" %%I In (%Spisok2%) Do (
If /I Not %%I==%ExceptionFile1% (
If /I Not %%I==%ExceptionFile2% (
MD %NamePathTemp%\%%~nI
%%I /Q /C /T:C:\Temp\O2003updates\Temp\%%~nI
REN %NamePathTemp%\%%~nI\*.msp %%~nI.msp
MOVE %NamePathTemp%\%%~nI\*.msp %NamePath%
RD /S /Q %NamePathTemp%
)
)
)
ECHO.
ECHO Извлечение файлов выполнено успешно!
ECHO.
ECHO Идёт поиск дистрибутива MS Office 2003...
ECHO.
wmic /? 1>nul
FOR /F "tokens=2* delims==" %%k in ('wmic path Win32_LogicalDisk where VolumeName^=^"%LabelCD%^" get name /value') DO (
ECHO Дистрибутив MS Office 2003 найден, файлы копируются на жёсткий диск...
CD /d %%k&Setup.exe /a /qb MSINODISABLEMEDIA=1 COMPANYNAME="" INSTALLLOCATION=%NewDistrib% PIDKEY=XXXXXXXXXXXXXXXXXXXXXXXXX
ECHO.
ECHO Дистрибутив успешно скопирован!
GOTO :NEXT
)
IF NOT EXIST %LabelCD% GOTO :END
ECHO.
:NEXT
ECHO.
ECHO Выполняется интеграция SP3 в дистрибутив MS Office 2003...
ECHO.
msiexec /p %NamePath%\01_Office2003SP3-KB923618-FullFile-RUS-MAINSP3.msp /a %NewDistrib%\STD11.msi SHORTFILENAMES=TRUE /qb
msiexec /p %NamePath%\01_Office2003SP3-KB923618-FullFile-RUS-OWC11SP3.msp /a %NewDistrib%\OWC11.MSI SHORTFILENAMES=TRUE /qb
DEL %NamePath%\%OfficeTemp1% %NamePath%\%OfficeTemp2%
ECHO SP3 интегрирован, выполяется интеграция других файлов-обновлений...
ECHO.
FOR %%f IN (%NamePath%\*.msp) DO msiexec /p %%f /a %NewDistrib%\Std11.msi SHORTFILENAMES=TRUE /qb
RD /S /Q %NamePath%
DEL %FileTemp1% %FileTemp2% %FileTemp3% %FileTemp4%
ECHO Интеграция SP3 и других файлов-обновлений выполнена успешно!
ECHO.
ECHO Обновлённый дистрибутив MS Office 2003 находится в папке C:\Temp\New_Distrib
ECHO.
pause
EXIT
ECHO.
:END
ECHO Дистрибутив MS Office 2003 не найден!
ECHO Вставьте диск с дистрибутивом в дисковод и запустите процесс снова!
ECHO.
pause
EXIT