- ベストアンサー
VC++での外部ファイル(batファイル)の実行
VC++のコード上で.batファイルを実行する必要が出てきたのですが、 VC++で外部ファイルを実行、その結果を受け取るにはどうすればよいのでしょうか? ちなみに使用しようと思っているバッチファイルは、juliusという音声認識エンジンです。 1.go.batからjulius.exeが起動 2.「### read waveform input enter filename->」と言う記述が出てくるので、wavファイルのファイル名を指定してエンター 3.#sentence1: ついに 、 他 団体 戦 。 #wseq1: <s> ついに:ツイニ:ついに:503 、:、:、:10 他:タ:他:188 団体:ダンタイ:団体: #507 戦:セン:戦:520 。:。:。:8 </s> #phseq1: silB | ts u i n i | sp | t a | d a N t a i | s e N | sp | silE のようにcmd.exe上に結果が返ってくる。 この一連の動作を、1のファイル名をVC++上で指定し、 3のcmd.exe上で現れる分をVC++上で受け取る(CStringなりに格納する)ような方法は無いでしょうか。 もし他に良い方法をご存知の方がいましたら、教えていただければ幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
<%1 は go.batの引数1を入力とする … キーボードからの入力をリダイレクトする 2>&1は エラー出力を標準出力にリダイレクトする >%2 は 標準出力go.batの引数2にリダイレクトする といった意味です > go.bat ファイル名 出力ログファイル名 このファイル名は 解析(juliusで)処理するファイルの名前です 出力ログファイル名は C/C++側で結果を受け取るためのファイル名です "go.bat ファイル名 出力ログファイル名" を sawn/execなどにコマンドやパラメータとして渡してやることになります
その他の回答 (2)
- aigaion
- ベストアンサー率47% (287/608)
パイプ作って子プロセスを起動すればよいですね. ちょっと古いけど,このあたり参考になるんじゃないかな? http://www.h4.dion.ne.jp/~fht/wptips/readprc.html
お礼
ANo.3の方の方法で出来ましたが、とても参考になりました。 ありがとうございます。
- redfox63
- ベストアンサー率71% (1325/1856)
まずは機能するバッチファイルを記述しましょう go.batを @echo off julius.exe <%1 2>&1 >%2 といったといった具合にして go.bat ファイル名 出力ログファイル名 で実行して出来上がる出力ログが適切なのかどうか確認しましょう 出来上がった出力ログが満足いくものであれば後はテキストファイルの処理になります go.batの実行に関してはプログラミングスタイルに依存するともいます Cランタイムのspawn/exec系やWinAPIのCreateProcessなど使うことになりそうです
補足
ありがとうございます、バッチファイルのログをとるということに頭が回りませんでした。 何でもかんでも聞いてしまって申し訳ないのですが、 <%1 2>&1 >%2の意味と、 go.bat ファイル名 出力ログファイル名 を記述するのはVCのコード上でなのでしょうか? また、ファイル名とは何のファイル名ですか?
お礼
希望通りに動作させることが出来ました。 ありがとうございました。