電子書籍の厳選無料作品が豊富!

コマンドプロンプトでバッチファイルを作成しているのですが

ステイタス確認コマンドにより、3つあるシステムの状態を表示させます。
コマンド実行後、システムの状態が表示されて、表示されたステイタス中に
あるシステムの稼働状態という項目が"CLOSE"の状態であるとき処理を続け
るようなものを作成したいです。

ようはコマンドにより出力された結果から"CLOSE"という単語を抽出し、3つ
全てが"CLOSE"であることを確認しました。なのでバッチを継続しますよ、
またひとつでも"CLOSE"でないのであればこのシステムが"CLOSE"ではな
かったので処理を中止しますよ、という処理を作成したいです。

変数名もあいまいで大丈夫なので構造を教えていただきたいです。


現在は

statekakunin -n システム名1
statekakunin -n システム名2
statekakunin -n システム名3

のようにコマンドを打ち込みしています。

ちなみに「statekakunin -n システム名1」を実行すると
system1   aaaaaa aaaaaaa
      bbbbbb ccccccc
CLOSE   dddddd eeeeeee
ffffffff    gggggg hhhhhhh

のように出力されます。表示結果はサンプルです。
この結果から"CLOSE"を抽出して処理を続けるかの判断をしたいです。

文章下手でごめんなさい

質問者からの補足コメント

  • これをfor分の中に組み込むことは可能ですか?
    for /f %%s in (条件) do (
    statekakunin -n %%s | findstr CLOSE >NUL
    if not errorlevel 1 (
    CLOSEが無かったときの処理
    for文を続行
    ) else (
    CLOSEが有ったときの処理
    pause
    )
    )

    のようにcloseを確認したらfor文処理を続けて行い、closeが確認できなかった場合は終了を促すように作成したいです。
    実際にこのコードを試してみると出力が1度しかありません。
    if not errorlevel 1 に入った場合、条件を満たしていたらそこからfor文に戻ることは出来ないのでしょうか。
    (条件)の中にはシステム名が3つほど格納されたファイルが入っています。

    No.2の回答に寄せられた補足コメントです。 補足日時:2019/07/19 19:27

A 回答 (3件)

gotoとかexitとかしない限りは、ifの実行後、forの次の回に移りますよ。


出力が一度しか無いので有れば、「条件」とやらが一度だけなのでは?
実際に動かしているコードをそのままコピペしてもらわないことには、ここに書いていない部分に問題があるんでしょうとしか言えません。
    • good
    • 0

statekakunin -n システム名 | findstr CLOSE >NUL


if not errorlevel 1 (
CLOSEが無かったときの処理
) else (
CLOSEが有ったときの処理
)
この回答への補足あり
    • good
    • 0

オープン中のファイルを別のプロセスで開くことはできなかったと思う。



そんなわけで、その「statekakunin」がどんなファイルアクセスをしているのかを確認してください。
都度開いて書き込んで閉じる…ような仕様なら、
 FINDコマンド
で確認できますよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報