DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DOSコマンドを実行し出力データを取得するについて

環境/言語:[Win XP(HE) VB2005]
分類:[.NET]

いつも参考にさせていただいております。
この度、開発中のソフトの出力内容(CSVファイル)を比較することとなりまして
Tipsの「DOSコマンドを実行し出力データを取得する」を参考に

psi.Arguments = "/c fc /?"  #まずはヘルプで実験しました。

としたところ、何も出力されませんでした。
これはなぜなんでしょうか?
ご存知の方がおられましたらご教授お願いいたします。
> Tipsの「DOSコマンドを実行し出力データを取得する」を参考に
>
> psi.Arguments = "/c fc /?"  #まずはヘルプで実験しました。
>
> としたところ、何も出力されませんでした。
> これはなぜなんでしょうか?

作成しているアプリケーションの種類が「Windowsアプリケーション」
になっていませんか?プロジェクトのプロパティを開いて、「アプリケーションの種類」を確認してください。


Tipの結果を出力箇所でConsoleクラスを使って出力していますので、
Windowsアプリケーションだと何も表示されません。

> '出力された結果を表示
> Console.WriteLine(results)

代わりに
MessageBox.Show(results)
のようにすれば結果を確認できます。
■No19164に返信(よねKENさんの記事)
> 作成しているアプリケーションの種類が「Windowsアプリケーション」
> になっていませんか?プロジェクトのプロパティを開いて、「アプリケーションの種類」を確認してください。
>
>
> Tipの結果を出力箇所でConsoleクラスを使って出力していますので、
> Windowsアプリケーションだと何も表示されません。
>
>>'出力された結果を表示
>>Console.WriteLine(results)
>
> 代わりに
> MessageBox.Show(results)
> のようにすれば結果を確認できます。
>
ご返答ありがとうございます。
たしかにWindowsアプリケーションですが、デバッグ時だと出力ウィンドウに
dir や subst なんかだと結果がでてきているんですが fc の場合だけ何もでません。
もちろんMsgBoxでも何もでてきませんでした。
fcだけは特別なんでしょうか?
失礼しました。WindowsアプリとConsole.WriteLineのミスマッチによる問題か
と思い返答いたしましたが、違ったようですね。
私の方でのコマンド依存の話とは思わず、確認はdirコマンドでやっていたので気づきませんでした。

理由についてはまだよくわかっていませんが、とりあえず
psi.RedirectStandardInput = True
といように標準入力をTrueにしてみてください。
"/c fc /?"の例ではこれでうまく行きました。

Tipsの例ではFCコマンドだとうまくいかないことは私も確認できたので、
標準出力でなく標準エラー出力に出ているのでは?とか疑ってみたりと
私の方でもいろいろ試しましたが、手詰まりになったので、Googleで調べてみました。

で、海外サイトの掲示板でFCコマンドを使ってファイルを比較する例があり、
その中でRedirectStandardInput = Trueとやっていたので、ひょっとしたら
と思い試したら当たりでした。
https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1063275&SiteID=1

> fcだけは特別なんでしょうか?

特別なのかどうかはわかりませんが、dirの場合とは違うようですね。
#dirとfcの場合、内部コマンドか外部コマンドかという違いがあるので、
#その辺の差かな?と疑っていますが、今のところ確証はありません。
2007/02/27(Tue) 12:01:55 編集(投稿者)

■No19167に返信(よねKENさんの記事)
> 失礼しました。WindowsアプリとConsole.WriteLineのミスマッチによる問題か
> と思い返答いたしましたが、違ったようですね。
> 私の方でのコマンド依存の話とは思わず、確認はdirコマンドでやっていたので気づきませんでした。
>
> 理由についてはまだよくわかっていませんが、とりあえず
> psi.RedirectStandardInput = True
> といように標準入力をTrueにしてみてください。
> "/c fc /?"の例ではこれでうまく行きました。
>
> Tipsの例ではFCコマンドだとうまくいかないことは私も確認できたので、
> 標準出力でなく標準エラー出力に出ているのでは?とか疑ってみたりと
> 私の方でもいろいろ試しましたが、手詰まりになったので、Googleで調べてみました。
>
> で、海外サイトの掲示板でFCコマンドを使ってファイルを比較する例があり、
> その中でRedirectStandardInput = Trueとやっていたので、ひょっとしたら
> と思い試したら当たりでした。
> https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1063275&SiteID=1
>
>>fcだけは特別なんでしょうか?
>
> 特別なのかどうかはわかりませんが、dirの場合とは違うようですね。
> #dirとfcの場合、内部コマンドか外部コマンドかという違いがあるので、
> #その辺の差かな?と疑っていますが、今のところ確証はありません。
>
よねKEN様ありがとうございます。
psi.RedirectStandardInput = Trueとすることで結果を取得することができました。
海外のサイトは今まで調べもしませんでしたが、これからは検索対象にいれます。
ありがとうございました。

解決済みを忘れました【追記】
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板