Top > プログラミング > .NET Tips> DOSコマンドを実行し出力データを取得する

DOSコマンドを実行し出力データを取得する」への評価、コメント

評価

良い / 悪い = 144 / 9 (「良い」の割合 = 0.941 , 人気度 = 2.056

評価する

コメント一覧


通常のコメント
金田 2023/07/11 (Tue) 19:32:55
DOSコマンドをいくつかパイプ(|)した出力結果を受け取ることはできないものでしょうか?

通常のコメント
momo 2023/05/7 (Sun) 19:43:01
この方法で結果を取れるコマンドと取れないコマンドがあります。
例えばnet useはとれますが、net sessionは取れません。
理由がわかる方いませんでしょうか?

通常のコメント
匿名 2018/10/4 (Thu) 06:20:16
DotNet Core 2.1
でも動作させることができました。
ありがとうございます。

評価の理由
Seaoftrees 2018/03/31 (Sat) 15:56:50
評価:良い
大変参考になりました。
ただ、非同期でデータを出力するを実行した場合画面が固まりVS2017の方から落としたりしないと動きません。(まるでメインスレッドが重い処理をしているかのように)
結果ですが、
Console.ReadLine();
この文を削除したところ無事固まることなく動作しました。
初心者の自分には何が悪かったのかよくわかりませんが、この文があると固まるようです。

通常のコメント
管理人 2017/11/23 (Thu) 00:34:19
> このコードでは非同期で出力データを取得する事はできません。

「このコード」というのは、「非同期で出力データを取得する」の項で紹介しているコードで間違いありませんか?もしそうであれば、非同期で読み取るはずですが。

評価の理由
匿名 2017/11/22 (Wed) 16:14:21
評価:悪い
このコードでは非同期で出力データを取得する事はできません。うその情報は削除して下さい

通常のコメント
Nothing 2017/02/11 (Sat) 15:21:58
【出力とエラーの両方を読み取る】【VB.NET】
p_OutputDataReceived と P_ErrorDataReceived
イベントハンドラのエラーについて

Console.Writeline(e.data)の所を、
Form.Textbox1.AppendText(e.Data) に変えたのですが、
↑のところで、
NullReferenceExceptionはハンドルされませんでした。
というハンドルされていない例外が発生します。
インターネットで調べると、
Null の変数(オブジェクト)を参照すると、発生する
という感じなので、
If (e.data = Nothing) Then
Return
ElseIf (e.Data <> Nothing) Then
Form1.Textbox1.AppendText(e.Data)
End If
にしたのですがやはり結果は同じでした。
どうすればよいでしょうか?

評価の理由
Nothing 2017/02/11 (Sat) 15:10:25
評価:良い
【出力とエラーの両方を読み取る】【VB.NET】
p_OutputDataReceived と p_ErrorDataReceived イベントハンドラで例外がスローされます。

Console.Writeline(e.Data)
の所を
Form1.Textbox1.AppendText(e.Data)
にしたのですが、
NullReferenceException はハンドルされませんでした。
というエラーになってしまいます。
どうすればよいでしょうか。
インターネットを検索する限り、Null の参照型をしようとしたときに発生するらしく、
自分なりに解釈したところは、"e.data が Nothing"なのかな~、と思ったのですが…

通常のコメント
cyou 2016/09/16 (Fri) 10:29:58
とても役に立てました。

通常のコメント
John Doe 2016/08/24 (Wed) 21:19:16
BeginOutputReadLineではうまくいかなかったのですが、
以下のようにすることで思い通りの動作になりました。
p.Start()
While (p.HasExited = False)
TextBox1.AppendText(
p.StandardOutput.ReadLine() &
Environment.NewLine)
End While
TextBox1.AppendText(
p.StandardOutput.ReadToEnd())

通常のコメント
John Doe 2016/08/24 (Wed) 15:16:43
formアプリケーションにて非同期で出力データを取得し、TextBoxに出力するにはどうすればいいのでしょう?
ここでの方法では、DOSコマンドが終了した後にまとめて出力されていまいます。

通常のコメント
管理人 2014/11/16 (Sun) 01:41:07
> ftp -s:ファイル名を実行した場合にファイル内のコマンドでのエラー(ホストがオープンできないなど)のエラーを拾うことはできませんでしょうか?p_ErrorDataReceivedは発生しますがe.Dataに何も表示されません。

「出力とエラーの両方を読み取る」の方法で私が試した限りでは(Windows 8.1)、問題ない(コマンドプロンプトで実行した時と同じ)ように見えました。なおWindows 7のFTP.EXEには、「Error messages are not displayed or are not redirected when you run the FTP command and a connection error occurs in Windows 7 or in Windows Server 2008 R2(http://support.microsoft.com/kb/2495786)」という不具合が、Windows VistaのFTP.EXEには「Ftp.exe output cannot be redirected to a file in Windows Vista or in Windows Server 2008(http://support.microsoft.com/kb/2548554)」という不具合があるようです。

通常のコメント
くた 2014/11/14 (Fri) 11:44:46
いつも参考にさせて頂いております。
ftp -s:ファイル名を実行した場合にファイル内のコマンドでのエラー(ホストがオープンできないなど)のエラーを拾うことはできませんでしょうか?p_ErrorDataReceivedは発生しますがe.Dataに何も表示されません。

通常のコメント
匿名 2014/03/21 (Fri) 18:47:23
プログラミング経験5年以上にしてC#に初めて足を踏み入れる者だが、簡潔かつ明快な説明のコメントアウトに感服。素晴らしいの一言に尽きる。

通常のコメント
管理人 2013/09/2 (Mon) 01:30:22
> リッチテキストボックスに非同期で結果を出力するにはどのように記述すればよろしいのでしょうか?

基本的には、Control.Invokeメソッドを使います。詳しくは、

別スレッドからフォーム、コントロールを扱う
http://codezine.jp/article/detail/139?p=1#form

を参考にしてください。

通常のコメント
デスペ 2013/08/19 (Mon) 18:20:05
いつも活用させてもらっており、感謝です。
リッチテキストボックスに非同期で結果を出力するにはどのように記述すればよろしいのでしょうか?

評価の理由
Takashi 2013/06/23 (Sun) 19:48:41
評価:良い
 複数コマンドの実行に成功しました。ありがとうございます。(Formプログラムに実装しました。)
 しかし、コマンド実行後、Formが固まってしまい一度強制終了しないといけない状況です。
 少し勉強が足りないようです。

通常のコメント
管理人 2013/06/13 (Thu) 22:50:52
> 非同期にて出力する場合、プロセスが終了した後もイベントが検知されるのですが、最終的に同期を取るのは難しいでしょうか?

WaitForExitの後でもOutputDataReceivedイベントが発生するということでしょうか?もしそのようなことが起こるようでしたら、e.Dataがnullになったら出力データをすべて読み取ったと判断する方法はいかがでしょうか?

通常のコメント
C#の猛者 2013/06/13 (Thu) 11:32:42
非同期にて出力する場合、プロセスが終了した後もイベントが検知されるのですが、最終的に同期を取るのは難しいでしょうか?

評価の理由
VC#学生 2013/04/14 (Sun) 09:41:50
評価:良い
本格的なアプリを作成目指しています。
市販の本などで得られないポイントを
よくここで問題解決のヒント頂いています。
今回もありがとうございました。
-ここの内容は一発でした。下記にもあったように
system関数に代わるものですね-

通常のコメント
もふ 2012/09/13 (Thu) 11:17:47
標準エラーのリダイレクト方法が知りたいです。

通常のコメント
匿名 2012/05/8 (Tue) 01:52:51
OutputDataReceivedイベントについても教えていただきたいのですが・・・

評価の理由
匿名 2011/10/23 (Sun) 16:04:37
評価:良い
CやC++のsystem関数の代わりを探していました。
正にそのものです。

通常のコメント
サカサクラゲ 2011/07/22 (Fri) 15:25:04
いつも助かっています。ありがとうございます。

評価の理由
mi 2010/12/22 (Wed) 16:07:29
評価:良い
ありがとうございます。

評価の理由
P 2010/10/8 (Fri) 17:14:56
評価:良い
重宝します。ありがとうございます。

評価の理由
oTo3 2010/09/25 (Sat) 17:55:58
評価:良い
参考になりました。ありがとう。

評価の理由
ものくさたろう 2010/02/13 (Sat) 21:52:47
評価:良い
時々参考にしています。C#で必要なものがすぐに
手に入るので大変重宝してます。なにせ物草ですから(^^ゞ

評価の理由
にー 2010/02/4 (Thu) 16:46:57
評価:良い
ありがとうございます

評価の理由
さつき 2009/06/25 (Thu) 09:51:44
評価:良い
とても参考になりました。
ありがとうございました。

評価の理由
シヴァ♂ 2007/07/27 (Fri) 13:50:46
評価:良い
非常に欲しかったソースだから^^v

評価の理由
だい 2005/10/27 (Thu) 18:27:14
評価:良い
どうやっていいのかわからなかったのが、
一発で解決です!!
ありがとうございます(^v^)

評価の理由
匿名 2005/08/5 (Fri) 18:17:17
評価:良い
good work!

評価の理由
でった 2004/09/15 (Wed) 11:28:49
評価:良い
色々なTipsの提供感謝しています。
これからも便利なTipsの追加を期待しています

評価の理由
C#user 2004/06/4 (Fri) 23:05:08
評価:良い
痒いところに手が届く内容です。いつも助かっています!

評価の理由
??? 2004/02/26 (Thu) 23:01:57
評価:良い
初心者なんで助かりました。

コメントの投稿

[説明]