PDA

Показать полную графическую версию : [решено] Отсчет установленных обновлений


sov44
12-03-2011, 23:17
Помогите написать скрипт по установке обновлений 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 завершена
.........

Iska
12-03-2011, 23:25
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% завершена

gora
12-03-2011, 23:37
Или так:@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! завершена
)

sov44
18-06-2011, 21:08
Подскажите, почему не меняется значение [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
)

gora
18-06-2011, 21:27
почему не меняется значение »
Добавьте в начало скрипта setlocal enabledelayedexpansion и переменную заключите в восклицательные знаки вместо процентов.Echo [ChainedInstall_!Cnr!]

sov44
18-06-2011, 21:43
Всё равно не считает (отсутствующий операнд)

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
)

gora
18-06-2011, 21:47
sov44, а где строка???Добавьте в начало скрипта
Код:
setlocal enabledelayedexpansion »

Iska
18-06-2011, 21:47
sov44, напротив, уберите «%»:

Set /A Cnr += 1

А в остальном — по #5 (http://forum.oszone.net/post-1697209-5.html).

sov44
18-06-2011, 22:02
а где строка? »
Стороку добавил (забыл об этом сразу написать, т.к. это лишь кусок скрипта )
Set /A Cnr += 1 »
Всё заработало!

п.с. Iska, поясните, почему Cnr без переменных?

Iska
18-06-2011, 23:28
п.с. Iska, поясните, почему Cnr без переменных? »
Смотрите отсюда (http://forum.oszone.net/post-1668833.html#post1668833) и ниже.

sov44
19-06-2011, 11:56
Подскажите, как из цикла обработки 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

gora
19-06-2011, 12:06
@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