0

私は趣味の C# プログラマーで、setMACE という CLI ツールのインターフェイスを作成しています。これは私が使用しているコードのスニペットです:

if (!File.Exists(batpath))
{
    using (FileStream fs = File.Create(batpath))
    {
        fs.Close();
    }

    using (StreamWriter sw = new StreamWriter(batpath))
    {
        int outfile = r.Next(5);
        sw.WriteLine("cd " + Application.StartupPath);
        sw.WriteLine(exe + " " + "\"" + ofd.FileName + "\"" + " -d " + " >>logfile.txt");
    }
    Process proc = Process.Start(batpath);

これにより、次の .BAT が作成されます。

cd C:\Users\Steve Jobs\Pictures\SetMACE_v1006
setMACE_x64.exe "C:\Users\Steve Jobs\Documents\avast.cap" -d  >>logfile.txt

これは、CMD でこの .BAT を実行すると機能しますが、アプリに実行させると、プログラムで新しいウィンドウが生成され、>output.txt

これが非常に簡単な場合は申し訳ありませんが、オンラインで何も見つけることができません.

4

2 に答える 2

0

start を介して cmd の 2 番目のインスタンスを生成しているようです。これは、cd を実行しているディレクトリと同じディレクトリで開始されていない可能性があります。

バッチ ファイルに "start cmd" があるのはなぜですか? setMACE_x64.exe を直接実行しないのはなぜですか?

つまり、バッチファイルは次のようになります。

cd C:\Users\Steve Jobs\Pictures\SetMACE_v1006
setMACE_x64.exe "C:\Users\Steve Jobs\Documents\avast.cap" -d  >>logfile.txt
于 2012-11-06T14:10:57.933 に答える
0

これを試して:

string str = @"/c cd C:\Users\Steve Jobs\Pictures\SetMACE_v1006";
String str2 = @"setMACE_x64.exe ""C:\Users\Steve Jobs\Documents\avast.cap"" -d  >>logfile.txt"
Process.Start("cmd.exe", str);
Process.Start("cmd.exe", str2);

これが役立つことを願っています

于 2013-03-05T06:24:58.917 に答える