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

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

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

Re[3]: C#でbatファイル実行


(過去ログ 75 を表示中)

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

■44307 / inTopicNo.1)  C#でbatファイル実行
  
□投稿者/ ヤス (1回)-(2009/12/04(Fri) 17:34:55)

分類:[C#] 

VisualC#上でbatファイルを実行させたいと思っております。

batファイルの中身は

 randinit -din inp.dat -cout inpi.cod -xdim 100 -ydim 100 -topol rect -neigh bubble -rand 123
 vsom -din inp.dat -cin inpi.cod -cout inp2.cod -rlen 10000 -alpha 0.5 -radius 100 -rand 1
 vcal -din inp.dat -cin inpi.cod -cout inpiv.cod
 vcal -din inp.dat -cin inp2.cod -cout inp2v.cod -numlabs 100umat -cin inpiv.cod -ps -o inpiv.ps
 umat -cin inp2v.cod -ps -o inp2v.ps

となっております。普通に実行はできます。

しかしプログラム上で、

 string stExeName = @"c:\\aaa\\bbb\\test.bat";
 Process pro = new Process();
 pro.StartInfo.UseShellExecute = false;
 pro.StartInfo.RedirectStandardOutput = true;
 pro.StartInfo.CreateNoWindow = true;
 pro.StartInfo.FileName = stExeName;
 pro.Start();



 string stExeName = @"c:\\aaa\\bbb\\test.bat";
 Process pro = new Process();
 pro.StartInfo.UseShellExecute = false;
 pro.StartInfo.RedirectStandardOutput = true;
 pro.StartInfo.CreateNoWindow = true;
 pro.StartInfo.FileName = @"C:\WINDOWS\system32\cmd.exe";
 pro.StartInfo.Arguments = stExeName;
 pro.Start();

と書いても、実行されません。
ただ実行するだけでいいのですが… お教えいただけると有り難いです。


引用返信 編集キー/
■44308 / inTopicNo.2)  Re[1]: C#でbatファイル実行
□投稿者/ Hongliang (527回)-(2009/12/04(Fri) 17:43:48)
起動ディレクトリが違ってて randinit またはその引数のファイルが見つからないってだけの話ではないですか?
ProcessStartInfo.WorkingDirectory で特に指定しない場合、カレントディレクトリは親プロセス(つまりは Process.Start する自分自身ですね)のものを引き継ぎます。
引用返信 編集キー/
■44309 / inTopicNo.3)  Re[1]: C#でbatファイル実行
□投稿者/ みきぬ (679回)-(2009/12/04(Fri) 17:47:01)
>  string stExeName = @"c:\\aaa\\bbb\\test.bat";

逐語的文字列を使っているので、\ マークを重ねる必要はないですよね。

> pro.StartInfo.FileName = @"C:\WINDOWS\system32\cmd.exe";

こっちはちゃんと書いてるのに…。
引用返信 編集キー/
■44310 / inTopicNo.4)  Re[2]: C#でbatファイル実行
□投稿者/ ヤス (3回)-(2009/12/04(Fri) 17:56:42)
No44308 (Hongliang さん) に返信
> 起動ディレクトリが違ってて randinit またはその引数のファイルが見つからないってだけの話ではないですか?
> ProcessStartInfo.WorkingDirectory で特に指定しない場合、カレントディレクトリは親プロセス(つまりは Process.Start する自分自身ですね)のものを引き継ぎます。

Process.StartInfo.WorkingDirectory でディレクトリを指定したらできました!!
Hongliang さん ありがとうございました。
解決済み
引用返信 編集キー/
■44355 / inTopicNo.5)  Re[3]: C#でbatファイル実行
□投稿者/ aetos (203回)-(2009/12/06(Sun) 21:02:29)
No44310 (ヤス さん) に返信
> ■No44308 (Hongliang さん) に返信
>>起動ディレクトリが違ってて randinit またはその引数のファイルが見つからないってだけの話ではないですか?
>>ProcessStartInfo.WorkingDirectory で特に指定しない場合、カレントディレクトリは親プロセス(つまりは Process.Start する自分自身ですね)のものを引き継ぎます。
>
> Process.StartInfo.WorkingDirectory でディレクトリを指定したらできました!!
> Hongliang さん ありがとうございました。

バッチファイルの先頭に

pushd "%~dp0"

って書くおまじないを先日知りました。便利です。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -