C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

コードからDOSプロンプトを呼び出し、コマンド実行するには?


(過去ログ 5 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■5617 / inTopicNo.1)  コードからDOSプロンプトを呼び出し、コマンド実行するには?
  
□投稿者/ 山ね 二等兵(1回)-(2006/08/18(Fri) 11:56:15)

分類:[C#] 


分類:[C#] 

お世話になります。
プログラムから、コマンドプロンプトを呼び出し、あるコマンドを
実行したいのですが、上手いこと動きません。

string cmd = "test";

ProcessStartInfo thePsi = new ProcessStartInfo();
thePsi.FileName = Environment.GetEnvironmentVariable("ComSpec");

// 出力を読み取れるようにする
thePsi.RedirectStandardInput = false;
thePsi.RedirectStandardOutput = true;
thePsi.UseShellExecute = false;
thePsi.WorkingDirectory = Application.StartupPath;

// ウィンドウを表示しないようにする
thePsi.CreateNoWindow = true;
thePsi.Arguments = cmd;
Process theProcess = Process.Start(thePsi);

string results = theProcess.StandardOutput.ReadToEnd();
Console.WriteLine("{0}", results);
theProcess.WaitForExit();
theProcess.Close();

当プログラムの実行パスと同じ場所に、あるEXEが存在し、そのEXEに対するコマンドを実行したいのです。
ですので、まずは WorkingDirectory に、当プログラムの実行パスを設定し
Arguments には、EXEに対するコマンドを入れてみたのですが・・・。
結果の results には、作業パスを移動させただけの結果が返ってきており
Arguments に設定した cmd が実行されていないようです。

コードからではなく、手動でプロンプトを起動し、
cd コマンドで作業パスを移動させた後、同じcmdを実行させると希望通りに動いています。

何がおかしいのでしょうか?
何かお分かりになる方、いらっしゃいましたら
ご教授頂けませんでしょうか。

0
引用返信 編集キー/
■5618 / inTopicNo.2)  Re[1]: コードからDOSプロンプトを呼び出し、コマンド実行するには?
□投稿者/ Hongliang 軍曹(79回)-(2006/08/18(Fri) 12:15:33)
Hongliang さんの Web サイト

分類:[C#] 

Process が実行しているのが cmd.exe/command.com だから、でしょう。
どうして test を直接実行させないのでしょうか?


// /c オプションという手もあったりするみたいですがー。

0
引用返信 編集キー/
■5620 / inTopicNo.3)  Re[2]: コードからDOSプロンプトを呼び出し、コマンド実行するには?
□投稿者/ 山ね 二等兵(2回)-(2006/08/18(Fri) 13:24:14)

分類:[C#] 

>Hongliang様

早速回答下さいまして、有難うございます。
なるほど!(笑)と思い、EXEを直接起動させ、引数に"test"を渡して実行してみました。

Process.Start("EXEまでのパス", "test");

また、"test" と書いた batファイル を、EXEと同じディレクトリに格納して
batを起動するようにも変更してみました。

Process.Start("batまでのパス");

しかし、どちらもうまくいきませんでした。
どちらも、EXEが返してきているであろうコマンドのヘルプが戻ってきています。

bat を、手動でダブルクリックすると、正常に実行されます。
なにが悪いのか、お分かりになりますでしょうか。
これは、EXEを作った所に聞くべき質問なのでしょうか。
お手数ですが、何か気づかれた点がございましたら、教えて頂けますでしょうか。


0
引用返信 編集キー/
■5621 / inTopicNo.4)  Re[3]: コードからDOSプロンプトを呼び出し、コマンド実行するには?
□投稿者/ 山ね 二等兵(3回)-(2006/08/18(Fri) 13:56:37)

分類:[C#] 

う、うーん。
解決したわけではないのですが・・。

>Process.Start("batまでのパス");
>しかし、どちらもうまくいきませんでした。

bat ファイルに、EXEまでのディレクトリへ移動する命令文を入れたら
Process.Start("batまでのパス")で、正常に起動できました。

〜〜batファイルの中身〜〜
cd "EXEまでのパス"
test


testコマンドに引数を持っており、固定ではないので
なるべくbit起動によるプロセス開始は行いたくないのですが・・・。

0
引用返信 編集キー/
■5622 / inTopicNo.5)  Re[4]: コードからDOSプロンプトを呼び出し、コマンド実行するには?
□投稿者/ まどか 中佐(212回)-(2006/08/18(Fri) 14:33:14)

分類:[C#] 

c:\temp\test.exe 1,abc,23

c:\temp\test.exe → コマンド
1,abc,23 → 引数

という解釈をしていらっしゃらないような気がしますが。。。

0
引用返信 編集キー/
■5623 / inTopicNo.6)  Re[5]: コードからDOSプロンプトを呼び出し、コマンド実行するには?
□投稿者/ 山ね 二等兵(4回)-(2006/08/18(Fri) 15:00:54)

分類:[C#] 

>まどか様

回答下さいまして、有難うございます。
おっしゃいますように、コマンドを引数として扱っている事が原因でした^^;

初回のコードで、

thePsi.FileName = "EXEまでのパス";
・・・・
thePsi.Arguments = "(testに対する)引数"; 
※前回は、”test ○,○・・"と書いていた所を、"○, ○・・"に変更。

に変更すると、正常に動きました。
なんだか、初歩的ミスを犯してしまい、申し訳ございません。勉強になりました。
本当に、有難うございました。



解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -