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

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

新規登録して質問してみよう
ただいま回答率
85.47%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

4回答

917閲覧

C#でコマンドプロンプトjava -versionを入力した際の出力を取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/06/11 06:42

###前提・実現したいこと
コマンドプロンプトでjava -versionと入力した際に出力される情報を
C#で取得し、stringの変数に格納したいです。
やり方を教えてほしいです。

###試したこと
System.Diagnostics.Processを試したのですが、
dir、ipconfigの出力は取得できます。
ですがjava -versionが取得できません。

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

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

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

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

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

guest

回答4

0

javaのバージョン出力は標準出力ではなく標準エラー出力で出力されます。

投稿2017/06/11 07:12

YAmaGNZ

総合スコア10288

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

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

0

java -versionの結果は標準出力ではなく標準エラー出力に出ます。
その点に注意すると解決できると思いますよ。

投稿2017/06/11 07:14

KSwordOfHaste

総合スコア18394

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

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

0

手間かかりますが、直感的に理解できる方法(パッと思いついた方法)は、コマンドプロンプトのリダイレクトですね。
C#からcmd.exeを呼び出して、cmdの引数にjava -versionをリダイレクトで渡して、そのあとでテキストファイルの内容を読み込んで変数に入れる。
ファイルを削除する。
完了。

投稿2017/06/13 01:53

otftrough

総合スコア476

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

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

KSwordOfHaste

2017/06/13 02:35

ファイルを出力するには「テンポラリーディレクトリーはどこかいな」とか「一時ファイルの名前に注意する」「あとでファイルを消す」といった余分な配慮が必要なので、標準エラー出力を受け取る機能をそのまま使う方が実装がスッキリ(素直な実装)という気がしますね。
otftrough

2017/06/13 02:53

そうなんですか、ありがとうございます。
KSwordOfHaste

2017/06/13 02:56

色々なやりかたがあることを知り、それらを比較することは経験を積む上では「よいこと」だと自分は思いますよ!
YAmaGNZ

2017/06/13 09:28

リダイレクトする注意点ですが 「java -version > version.txt」だと標準出力しかファイルに出力されませんので必要な情報がファイルに出力されません。 今回の場合、標準エラー出力で出力されるので「java -version 2> version.txt」みたいに書く必要があります。
guest

0

ベストアンサー

C#

1using System; 2using System.Diagnostics; 3 4namespace cmdtest1 5{ 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 ProcessStartInfo psi = new ProcessStartInfo(); 11 psi.FileName = "java"; 12 psi.Arguments = "-version"; 13 psi.RedirectStandardError = true; 14 psi.UseShellExecute = false; 15 psi.CreateNoWindow = true; 16 17 Process p = Process.Start(psi); 18 string output = p.StandardError.ReadToEnd(); 19 p.WaitForExit(); 20 21 Console.WriteLine(output); 22 23 Console.ReadKey(); 24 } 25 } 26}

参考にしたページ
C#でコマンドを実行して結果を取得する
java -versionの出力先って

以上のページに書かれていた内容をそのまま使いました。

投稿2017/06/11 07:15

編集2017/06/11 07:17
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問