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 实例,它可能不是在您要 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 回答