我是一个业余爱好的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
如果这很简单,我很抱歉,但我在网上找不到任何内容。
答案 0 :(得分:0)
您似乎正在通过启动生成cmd的第二个实例,该实例可能不会在您正在播放的同一目录中启动
为什么批处理文件有“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
答案 1 :(得分: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);
我希望这会有所帮助