Назад | Перейти на главную страницу

Пакетный скрипт с несколькими параметрами

Я выполняю пакетный сценарий для выполнения операций со службами на сервере. поэтому я даю пользователю пользовательский интерфейс, чтобы выбрать список служб с сервера. Я могу выполнить эту операцию, если пользователь выбирает только одну услугу. Я хочу знать, как действовать, если пользователи выбирают несколько служб, поскольку эти службы будут переданы как параметр в пакетный файл. Я пробовал это для одной службы.

set /a ArgCount = 0
for %%a in (%*) do (
set /a ArgCount += 1
set "argVec[!ArgCount!]=%%~a"
)
if !ArgCount! LSS 2 ( 
echo Arguments missing 
goto :eof
)
    set server=%1
    set serviceName=%2`


    SC \\%server% query  "%serviceName%" | find "STATE" | find "RUNNING"
    If ERRORLEVEL 1 goto :start

    :start
    cmdkey /add:%server% /user:%username% /pass:%password%
    sc \\%server% start "%ServiceName%"

Я хочу знать, как изменить этот сценарий, когда пользователь выбирает более одной или нескольких служб на удаленном рабочем столе.

Этот пакет не использует argcount, а просто сохраняет% 1 в servername, а затем использует shift в цикле для обработки услуг, пока все не будет сделано.

@Echo off
set server=%1
:loop
shift
If "%~1" Equ "" goto :eof
set serviceName=%1

SC \\%server% query  "%serviceName%" | findstr "STATE.*RUNNING" && Goto :loop

cmdkey /add:%server% /user:%username% /pass:%password%
sc \\%server% start "%ServiceName%"
Goto :loop