2

一部のソフトウェアをアンインストールするための Windows バッチ スクリプトを作成しています。ただし、次のアンインストールを続行する前に、アンインストーラーがサービスを再起動するのを待つ必要があります。

次を使用して、アンインストーラーが終了するまでスクリプトを待機させることができます。

for /f "usebackq" %%M in ('tasklist /nh /fi "imagename eq %process_1%"') do if not %%M==%ignore_result% goto 1

しかし、私の人生では、スクリプトを取得してサービスが開始されるのを待ってから、スクリプトを続行してさらにアンインストールを実行する方法を理解することはできません。

私はどんな提案にもオープンです。

4

3 に答える 3

0

ポスターが提供する anwser は機能しますが、一時ファイルを使用します。パイプセパレーターを使用してそれを回避する方法を見つけました。

このコードはサービスを開始し、開始されるまで待機します。

sc start ServiceName
:1
sc query ServiceName>NUL | find "RUNNING">NUL
if errorlevel 1 goto 1
(...)

リダイレクト (>NUL) はオプションです。少なくとも、私の場合は違いはありません。

于 2014-04-27T15:12:44.897 に答える
0

コメントからOK私は問題を整理するために以下のスクリプトを使用しました。中間ファイルを使用しないことを望んでいましたが、必要な場合....

@echo off
if exist service.txt del service.txt
set process=setup.exe
set ignore_result=INFO:
:1
for /f "usebackq" %%M in ('tasklist /nh /fi "imagename eq %process%"') do if not %%M==%ignore_result% goto 1
:2
sc query AcquisitionService>service.txt
find "RUNNING"<service.txt>nul
if errorlevel 1 goto 2
:3
echo.
echo Stuff finished.......

アイデアをありがとう。

于 2010-06-11T15:21:54.097 に答える