質問:VB.NETでのDOSコマンドを実行について
- 題名: 質問:VB.NETでのDOSコマンドを実行について
- 著者: けんいち
- 日時: 2008/03/10 12:03:49
- ID: 21623
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 質問:VB.NETでのDOSコマンドを実行について
- 著者: よねKEN
- 日時: 2008/03/10 13:27:26
- ID: 21625
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: 質問:VB.NETでのDOSコマンドを実行について
- 著者: けんいち
- 日時: 2008/03/10 14:15:28
- ID: 21626
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: 質問:VB.NETでのDOSコマンドを実行について
- 著者: よねKEN
- 日時: 2008/03/10 14:33:16
- ID: 21627
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: 質問:VB.NETでのDOSコマンドを実行について
- 著者: けんいち
- 日時: 2008/03/10 15:05:57
- ID: 21628
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
DOSコマンドを実行について質問です。
XCOPYを実行するプログラムを作成したく、
「DOSコマンドを実行し出力データを取得する」
「DOBON.NET > プログラミング道 > .NET Tips > プロセス」
を参考にDOSコマンドを実行するプログラムを作成しました。
しかし、実際にプログラムを起動してもXCOPYを実行しません。
(COPY,DIRは実行できました。XCOPYも直接DOS上で実行できたのでコマンド間違いはないといます。)
なぜ、実行できないのか解決方法などあればご教授お願い致します。
環境は下記の通りです。
Win2000 Pro SP4
VB.NET 2005 Framework2.0.50727
ソース
Dim results As String
Dim psi As New System.Diagnostics.ProcessStartInfo()
'ComSpecのパスを取得する
psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec")
'出力を読み取れるようにする
psi.RedirectStandardInput = False
psi.RedirectStandardOutput = True
psi.UseShellExecute = False
'ウィンドウを表示しないようにする
psi.CreateNoWindow = True
'コマンドラインを指定("/c"は実行後閉じるために必要)
'psi.Arguments = "/c copy C:\copy1\*.txt C:\copy2"
psi.Arguments = "/c xcopy /d /Y /C /I C:\copy1\*.txt C:\copy2"
'起動
Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi)
'出力を読み取る
results = p.StandardOutput.ReadToEnd
'出力された結果を表示
Console.WriteLine(results)
'WaitForExitはReadToEndの後である必要がある
'(親プロセス、子プロセスでブロック防止のため)
p.WaitForExit()