Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Отсчет установленных обновлений (http://forum.oszone.net/showthread.php?t=201842)

sov44 12-03-2011 23:17 1633495

Отсчет установленных обновлений
 
Помогите написать скрипт по установке обновлений 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 1633498

sov44, так же, как это сделано в Запуск RunOnceEx с CD:
Код:


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 1633510

Или так:
Код:

@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 1697199

Подскажите, почему не меняется значение [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 1697209

Цитата:

Цитата sov44
почему не меняется значение »

Добавьте в начало скрипта
Код:

setlocal enabledelayedexpansion
и переменную заключите в восклицательные знаки вместо процентов.
Код:

Echo [ChainedInstall_!Cnr!]

sov44 18-06-2011 21:43 1697222

Всё равно не считает (отсутствующий операнд)
Код:

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 1697224

sov44, а где строка???
Цитата:

Цитата gora
Добавьте в начало скрипта
Код:
setlocal enabledelayedexpansion »


Iska 18-06-2011 21:47 1697225

sov44, напротив, уберите «%»:
Код:


Set /A Cnr += 1

А в остальном — по #5.

sov44 18-06-2011 22:02 1697236

Цитата:

Цитата gora
а где строка? »

Стороку добавил (забыл об этом сразу написать, т.к. это лишь кусок скрипта )
Цитата:

Цитата Iska
Set /A Cnr += 1 »

Всё заработало!

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

Iska 18-06-2011 23:28 1697291

Цитата:

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

Смотрите отсюда и ниже.

sov44 19-06-2011 11:56 1697451

Подскажите, как из цикла обработки 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 1697461

Код:

@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
        )
)



Время: 05:01.

Время: 05:01.
© OSzone.net 2001-2025