アプリ版:「スタンプのみでお礼する」機能のリリースについて

C#で実行形式ファイル(*.exe)を起動したいのですが、以下のようにしました。
しかし、うまくいきません。なぜでしょうか?

コマンドプロンプトから実行すればまったく同じ引数でもうまくいきます。
したがって引数の書式に問題があるとは思えません。

これを実行するとコマンドプロンプトのウィンドウが表示され2秒後に消えます。
しかし、作成されているべきふたつのファイル(rangeとtrain.scale)が作成されていません。

急いでいます。
よろしくお願いいたします。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Threading;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
try{
Process myProcess ;
myProcess = Process.Start(@"C:\Users\youzan\svm-scale.exe", @"-l -1 -u 1 -s           range train.txt > train.scale");

Thread.Sleep(2000);

myProcess.CloseMainWindow() ;
myProcess.Close();
}
catch(Exception e)
{
Console.WriteLine("The following exception was raised: ");
Console.WriteLine(e.Message);
}
}
}
}

A 回答 (2件)

> train.scale



そもそも、これはコマンドライン引数ではありません。

C#側で標準出力をうけるのであれば、
http://www.atmarkit.co.jp/fdotnet/dotnettips/657 …
    • good
    • 0
この回答へのお礼

わかりました。ありがとうございます。

結果として、>train.scale の部分を削除したら、標準出力(コンソール)に処理結果が
正しく表示されるようになりました。
コンソールではなくファイルに出力するためにリダイレクト処理を加えて成功しました。

ありがとうございました。

お礼日時:2012/01/12 09:37

恐らく求められている答えではありませんが、


「Process.Start」で「cmd /c "C:\Users\youzan\svm-scale.exe -l -1 -u 1 -s range train.txt > train.scale"」
みたいに実行すれば良いのではないでしょうか。

ちなみに試してはいませんので、動くのかはわかりません。
要は、コマンドプロンプトからなら動くということでしたので、
プログラム上でもコマンドプロンプトを介してみては、という提案です。
    • good
    • 0
この回答へのお礼

ありがとうございます。

結果的には、No.2のtodo36さんのご指摘にしたがって処理したら
うまくいきました。

お礼日時:2012/01/12 09:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!