すべて「MyServiceFactory -」という名前で始まるサービスのリストがあるとします。それらのすべてが開始されるわけではなく、ほんの一握りであり、サービスの使用状況によって異なります。実行中のサービスのみを停止し、これらのサービスを開始する (すべてのサービスではなく、再起動しない) バッチ プログラムを作成する方法を探しています。どんな助けでも大歓迎です
1093 次
2 に答える
2
PowerShell を使用して試すこともできます。サービスを開始および停止するために使用するワンライナーがいくつかあります。
# Start all services with FOO in their name:
powershell -Command start-service *FOO*
# Stop all running FOO services:
powershell -Command stop-service *FOO*
欠点は、PowerShell コマンドが、サービスで何が起こっているかについてのステータスを提供しないことですがnet start
、簡潔さが気に入らなければなりません :)
于 2012-02-16T14:20:37.053 に答える
1
これは機能するはずです(または、少なくとも開始できます):
@echo off
setlocal
if "%~1"=="" goto usage
set tmpFile=templist.txt
set tmpAnsi=templist_ansi.txt
wmic /locale:MS_409 service where "caption like '%~1' and state='Running'" get caption /format:csv >%tmpFile%
REM this is required to convert from Unicode(UCS-2) to ANSI
type %tmpFile%>%tmpAnsi%
Echo ---------------Stopping services----------------------
Echo.
for /f "tokens=2 skip=2 delims=," %%i in (%tmpAnsi%) do (
wmic /locale:MS_409 service where caption="%%i" call stopservice
)
Echo --------------Starting services-----------------------
Echo.
for /f "tokens=2 skip=2 delims=," %%i in (%tmpAnsi%) do (
wmic /locale:MS_409 service where caption="%%i" call startservice
)
goto end
:usage
Echo.
Echo Usage is:
Echo %~n0 pattern_to_check
Echo.
Echo Pattern:
Echo [ ] Any one character within the specified range ([a=f]) or set ([abcdef]).
Echo ^^ Any one character not within the range ([^a=f]) or set ([^abcdef].)
Echo %% Any string of 0 (zero) or more characters
Echo _ (underscore) Any one character. Any literal underscore
Echo used in the query string must be escaped by placing it inside []
Echo.
Echo If pattern contains spaces, it must be enclosed in double quotes
:end
バッチ ファイルに batch.bat という名前を付けるとすると、.bat という名前になりますbatch.bat "MyServiceFactory -%"
。
于 2012-02-16T03:29:59.377 に答える