Показать полную графическую версию : [решено] Отсчет установленных обновлений
Помогите написать скрипт по установке обновлений Microsoft Office с автоматическим отсчетом количества установленных обновлений
(чтобы вручную не писать: Установка обновления 1 завершена, Установка обновления 2 завершена и т.д.)
п.с. сразу оговорюсь, что скрипт написан в 866 кодировке ;)
Set Cnt=0
For %%I In (*.msp) Do Set /A Cnt += 1
Echo Количество обновлений - %Cnt%
ECHO.
ECHO.
start /wait msiexec /update kb2202188-clview.msp /qb-!
ECHO Установка обновления 1 завершена
start /wait msiexec /update kb2289116-osc-x-none-ru-ru.msp /qb-!
ECHO Установка обновления 2 завершена
start /wait msiexec /update kb2289116-oscintl-ru-ru.msp /qb-!
ECHO Установка обновления 3 завершена
start /wait msiexec /update kb2345000-word.msp /qb-!
ECHO Установка обновления 4 завершена
.........
sov44, так же, как это сделано в Запуск RunOnceEx с CD (http://www.oszone.net/2805/):
…
SET /A i=0
start /wait msiexec /update kb2202188-clview.msp /qb-!
SET /A i+=1
ECHO Установка обновления %i% завершена
start /wait msiexec /update kb2289116-osc-x-none-ru-ru.msp /qb-!
SET /A i+=1
ECHO Установка обновления %i% завершена
start /wait msiexec /update kb2289116-oscintl-ru-ru.msp /qb-!
SET /A i+=1
ECHO Установка обновления %i% завершена
…
Или так:@Echo off
setlocal enabledelayedexpansion
Set Cnt=0
For %%I In (*.msp) Do Set /A Cnt += 1
Echo Количество обновлений - %Cnt%
ECHO.
ECHO.
Set cntA=0
For %%I In (
"kb2202188-clview.msp"
"kb2289116-osc-x-none-ru-ru.msp"
"kb2289116-oscintl-ru-ru.msp"
"kb2345000-word.msp"
) Do (
start /wait msiexec /update %%~I /qb-^^!
Set /a cntA += 1
ECHO Установка обновления !cntA! завершена
)
Подскажите, почему не меняется значение [ChainedInstall_%Cnr%]
Set Cnr=5
For %%I In ("Office_Updates\*.msp") Do (
Echo.
Echo [ChainedInstall_%Cnr%]
Set /A %Cnr% += 1
Echo TaskName=
Echo TASKTYPE=exe
Echo PATH=MSIExec.exe
Echo CmdLine=/update %%I /qb
)
почему не меняется значение »
Добавьте в начало скрипта setlocal enabledelayedexpansion и переменную заключите в восклицательные знаки вместо процентов.Echo [ChainedInstall_!Cnr!]
Всё равно не считает (отсутствующий операнд)
Set Cnr=5
For %%I In ("Office_Updates\*.msp") Do (
Echo.
Echo [ChainedInstall_!Cnr!]
Set /A !Cnr! += 1
Echo TaskName=
Echo TASKTYPE=exe
Echo PATH=MSIExec.exe
Echo CmdLine=/update %%I /qb
)
sov44, а где строка???Добавьте в начало скрипта
Код:
setlocal enabledelayedexpansion »
sov44, напротив, уберите «%»:
…
Set /A Cnr += 1
…
А в остальном — по #5 (http://forum.oszone.net/post-1697209-5.html).
а где строка? »
Стороку добавил (забыл об этом сразу написать, т.к. это лишь кусок скрипта )
Set /A Cnr += 1 »
Всё заработало!
п.с. Iska, поясните, почему Cnr без переменных?
п.с. Iska, поясните, почему Cnr без переменных? »
Смотрите отсюда (http://forum.oszone.net/post-1668833.html#post1668833) и ниже.
Подскажите, как из цикла обработки msp
@echo off
setlocal enabledelayedexpansion
Set Cnr=2
For %%I In ("Office_Updates\*.msp") Do (
Echo.
Echo [ChainedInstall_!Cnr!]
Set /A Cnr += 1
Echo TaskName=
Echo TASKTYPE=exe
Echo PATH=MSIExec.exe
Echo CmdLine=/update %%I /qb
)
исключить owc11sp1-ru-ru.msp
@Echo Off
SetLocal EnableDelayedExpansion
Set Cnr=2
For %%I In ("Office_Updates\*.msp") Do (
If Not "%%~nxI"=="owc11sp1-ru-ru.msp" (
Echo.
Echo [ChainedInstall_!Cnr!]
Set /A Cnr += 1
Echo TaskName=
Echo TASKTYPE=exe
Echo PATH=MSIExec.exe
Echo CmdLine=/update %%I /qb
)
)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.