質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

2回答

342閲覧

batファイルから起動したexeに対して、返り値を待ってコマンドを投げたい

momo842

総合スコア8

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

1クリップ

投稿2024/10/17 03:15

実現したいこと

お世話になります。
事務系の業務をする社会人になります。
(恥ずかしながらVBAの簡単なマクロ作成しかしたことがないです)
業務上使用しているexeファイルがあり、そのexeファイルはbatファイルから起動しています。
本exeはコマンドプロンプト上で立ち上がり、起動後メニューが出てきます。
ex)
1:setting
2:measure
3:exit
select:

【実現したい内容】
上述したexeファイルの起動~コマンド実行までbatファイル化したいです。細かく以下の3つを実現したいです。
①bat起動後『select:』が返ってくるのを待つ
②①が返ってきたら2を入力する
③入力後の返り値をテキストファイルで残す

発生している問題・分からないこと

実現方法がまるで分らず困っています。(上記3点すべてやり方が分かっていない)
そもそもbatファイル内で完結させるべき話なのかから判断できていないです。
①文字列を待つ
ネットで検索すると時間でwaitをかける方法は出てくるのですが、文字列待ちの方法が見つかりませんでした。
②文字列の入力
echo 入力文字|***.exeはお試ししてみたのですが入力できずでした

完全に丸投げの形になってしまい大変申し訳ないです。
ご助言いただければ幸いです。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

上述した通りですが、足掛かりから何もつかめておらずです。。。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2024/10/17 05:21 編集

> 業務上使用しているexeファイルがあり、 このプログラムのマニュアルは存在しないのでしょうか? 質問を読む限りではインタラクティブ(対話形式)な操作を前提としている様ですが、もしかするとスイッチオプションが用意されているかもしれません。(/? オプションでヘルプメッセージが表示されたりするなど)
otn

2024/10/17 11:56 編集

> ②①が返ってきたら2を入力する とは、「2のキーだけを押す」「2 のキーを押した後 Enterキーを押す」のどちらでしょうか? あるいはそれ以外? > ③入力後の返り値 とは何ですかね?2を入力した後、プログラムがコマンドプロンプト画面に表示する文字列のことですか? その場合は1行ですか?複数行ですか?出力した後、プログラムは終了しますか?プログラム終了のためにさらに操作が必要(3を入力とか?)ですか? それとも2を入力すると直ちにプログラムが終了して、BATファイルの%ERRORLEVEL%で取得出来るプログラムの返り値のことですか?・・・こっちは多分違うかな。 状況によってはバッチファイルだけで可能な可能性があります。
xail2222

2024/10/25 19:02

標準出力、つまりコマンドプロンプトに出力されるということなら JScriptで、"WScript.Shell"を使ってStdOutとStdInでは出来ないですか? 詳細は、copilotとかchatgptに聞いたら教えてくれそうな気はします。 まぁ。でも、今ならpowershellの方がいいのかな。
guest

回答2

0

1:setting 2:measure 3:exit select:

がbatから呼び出されるメニューだとして2番のコマンドを実行したいなら
2番を選択したときに実行されるコマンドが何かをしらべてbatでダイレクトにそのコマンドを実行すればよいでしょう。わざわざselectをまって2を選ぶという行為自体が無駄に見えます

投稿2024/10/17 04:58

yambejp

総合スコア116443

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2024/10/17 05:15

そのメニューを出しているのが対象のexeなのではないかと思っていたのですが、どうでしょう。
yambejp

2024/10/17 05:19

TakaiYさん、それもそうですね・・・ 昔からのイメージだとメニューってたいていコマンドをbatで実行するためだけのUIだったので。
momo842

2024/10/17 05:38

仰る通りでございます。 exeがメニューを出しています。 説明わかりづらくて申し訳ございません。
yambejp

2024/10/17 05:42

momo842さん batファイルは何をしているのでしょうか? batを経由しなくてもダイレクトにexeを叩くとメニューが表示されるのですか?
momo842

2024/10/17 06:10

コメントありがとうございます。 batファイルはexeの起動オプション設定のためです。 具体的にexeは計測ソフトなのですが、計測時のmode等を起動オプションで設定しています。 exeだけでも起動はします。
yambejp

2024/10/17 06:26

powershellでsendkeysを使うとかは選択肢に入りますか?
guest

0

通常のbatchでは、コマンドの入出力を操作することはできません。

つかったことはありませんが、Power Automateツールの CMDセッションを使うと、出力文字列を待って、アクションが取れるので実現できるかもしれません。
https://learn.microsoft.com/ja-jp/power-automate/desktop-flows/actions-reference/cmd

タイマーなどでの自動実行の機能は有料のようです。
https://www.microsoft.com/ja-jp/biz/smb/column-power-automate-desktop

投稿2024/10/17 04:38

TakaiY

総合スコア13687

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

momo842

2024/10/17 05:39

ありがとうございます。 早速お試ししてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問