0

スケジュールされたタスクのステータスを確認して、その後に実行する他のタスクを決定する必要があります。例:

c:\software\scripts>find /I /C "Running" status.txt

---------- STATUS.TXT: 0

出力が次のようになるまで、このコマンドで「while」ループを実行するcmdスクリプトを作成する方法を知りたいです。

---------- STATUS.TXT: 1

set /p teststring=find /I /C "Running" status.txtそのコマンドからの出力がパラメータteststringを「----------STATUS.TXT:0」に設定し、「---------- STATUS」と比較することを期待して、を使用することを検討しました。 .TXT:1 "ですが、よくわかりません。

最終目標を達成するためにどのようにスクリプトを作成しますか?

4

1 に答える 1

2

whileバッチ構文は命令を提供しないため、を使用する必要がありますgoto。また、文字列を比較したり、検索文字列の出現回数を数えたりする必要はありません。検索文字列が見つかったかどうかに応じてfind、異なる値を返します。%errorlevel%これを試して:

:LOOP
find /i "running" status.txt >nul
if %errorlevel% neq 0 goto LOOP

再試行する前に、遅延を追加することもお勧めします。

:LOOP
find /i "running" status.txt >nul
if %errorlevel% neq 0 (
  ping -n 2 127.0.0.1 >nul
  goto LOOP
)

編集: @dbenhamによって提案されたように、よりコンパクトなフォームは次のようになります。

:LOOP
find /i "running" status.txt >nul || ( ping -n 2 127.0.0.1 >nul & goto LOOP )
于 2013-03-06T08:52:31.383 に答える