2017-07-31 150 views
1

我正在制作一个C#程序,它将使输入文件成为.iso文件。使用来自c sharp code的poweriso cmd命令

例如,如果我们在写我创建并给予例如C:\它在C:\创建iso文件名a目标路径的textboxC:\Users\User\Desktpo\a.txt

所以,我下载PowerISO,了解piso.exe然后我做了一些其他研究关于使用C#所以Process.Start();我写的几行代码:

string str = " create -o " + TextBox1.Text + ".iso -add " + TextBox2.Text + "//" ; 
Process process = new Process(); 
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
process.StartInfo.FileName = "\"C:\PowerISO\piso.exe\""; 
process.StartInfo.Arguments = str; 
process.Start(); 

但是,这是行不通的。 为什么?

编辑:我正在使用Visual Studio 2017winform

+0

你能调试并告诉我们它是否触发异常吗? – Ferus7

+0

尝试删除str开头的空格,并删除文件名中的引号。 –

+0

a)它没有触发和异常 – Programmer

回答

0

请注意,

C:\ PowerISO \ piso.exe \

不是一个有效的C#道路,在P之前的 “\” 和p是一种逃避indicater。 之前添加逐字运算符“@”或逃避它正确

编辑: 此外,要添加额外双引号FileName属性。 您可以检查是否路径是正确的主张与File.Exists方法的文件路径

Console.WriteLine(File.Exists(@"C:\PowerISO\piso.exe") ? "File exists." : "File does not exist."); 

  string str = " create -o " + TextBox1.Text + ".iso -add " + TextBox2.Text + "//" ; 
      Process process = new Process(); 
      process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
      process.StartInfo.FileName = @"C:\PowerISO\piso.exe"; 
      process.StartInfo.Arguments = str; 
      process.Start(); 

编辑: 逐字运营商的工作,但在逃逸更好的是我的意见。

  string str = " create -o " + TextBox1.Text + ".iso -add " + TextBox2.Text + "//" ; 
      Process process = new Process(); 
      process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
      process.StartInfo.FileName = "C:\\PowerISO\\piso.exe"; 
      process.StartInfo.Arguments = str; 
      process.Start(); 
+0

仍然没有什么WWW – Programmer

+0

仍然没有什么是有另一种方法来做到这一点 – Programmer

+0

尝试做到以下几点。 File.Exists() –