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