我正在执行批处理脚本来对服务器中的服务执行操作。因此,我为用户提供了一个用户界面,用于从服务器中选择服务列表。如果用户只选择一项服务,我可以执行此操作。我想知道如果用户选择多项服务,该如何执行,因为这些服务将作为参数传递给批处理文件。我尝试对单个服务执行此操作。
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%"
我想知道当用户在远程桌面上选择一个或多个服务时如何修改此脚本。
答案1
此批处理不使用 argcount,而只是将 %1 存储到服务器名称,然后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