アプリケーションを開く(Dosコマンド)実行完了の判断

はじめての投稿です。
お願い致します。

1)アプリケーションを開くで、Dosコマンド(cmd.exe)を開く。
2)文字入力で、コマンドを記載。+エンターキー入力を行う。
3)アプリケーション(cmd.exe)を閉じる。

上記1)~3)を順番に実行します。

2)のコマンドが瞬時に終わらない場合があり、完全に実行が終わっていないのに
3)のアプリケーション(cmd.exe)が動作し、2)が途中までしか実行されていない場合があります。
2)で、実行後の待機時間を多めに設定すると、もちろんそれまでに実行がすべて終わるのですが、
毎回、その待機時間まで待つのはちょっと無駄のように思えます。

コマンドがすべて正常に終了したことを判断する方法があるのでしょうか?

ちなみにコマンドの内容はバッチファイルで、その中は、ファイル名(サーバー上に存在)のリネイムを行っています。
少ない場合もあれば、100件以上の場合もあり、多い件数は、少し時間がかかる場合があります。
もちろんネットワークの状況にもよりますが。

アドバイスがあれば、お願い致します。

「ホットキーを押下」アクティビティを使って、CTRL+Aを行い、
更に「ホットキーを押下」アクティビティを使って、CTRL+Cで画面をコピー

「クリップボードから取得」アクティビティを使ってクリップボードから文字を取得し、
DOS.Substring(DOS.Length - 1,1).ToString
で、最後の文字列を取得し、それが”>”でなかったら処理中…と認識する。

こんなのどうでしょう?

こんにちは

詳細な状況がわからないのでアイデアベースになりますが、
例えば

  1. DOS窓から入力するのではなく、バッチを直接起動する→ウインドウのクローズをもって終了判断
  2. バッチを加工できるなら、バッチの最後に終了判定用のファイルを出力する処理を追加し、UiPath側ではそのファイルの有無をチェックする。

等が考えられるのではないかと思います。

ここで閉じるのではなく、Exitを発行するのも、一案ではないですか?
「文字を入力」アクティビティ自体は終了しますが、DOSは処理続け、コマンド終了時にEXITが発行され、DOS窓が閉じましたよ。

投稿者です。

皆様のご意見、大変参考になりました。

結局、「PowerShellを呼び出し」でバッチを実行することで解決しました。
なお、バッチの中にはリネイムの命令のみでExit命令は入れていません。
「PowerShellを呼び出し」は、このバッチがすべて終わらないと、次の工程へ進まなので、
このアクティビティを採用します。

返信いただきました皆様、ありがとうございました。

返信と、提案ありがとうございました。

”アプリケーションを閉じる”ことをやめて、Exit命令をバッチの最後にいれることでDOSの窓は消えますが、まだDOS処理が終わっていないのに次の工程へ進んでしまいます。

UiPathではアプリケーションの実行完了までは待ってくれないようです。
何かしらの考慮が必要のようですね。

先ほど、返信させていただきましたが、「PowerShellを呼び出し」で解決いたしました。

誠にありがとうございました。

1 Like

返信ありがとうございます。

「PowerShellを呼び出し」で解決しました。

ありがとうございました。

2 Likes

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.