2012-07-17 40 views
-2

从我以前的问题在这里,我正在写一个程序,通过CMD执行一些文件。参数Cmd不工作

这里是我的代码

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Windows.Forms; 
using System.Diagnostics; 

namespace Convert 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 
    } 

    private void BtnSelect_Click(object sender, RoutedEventArgs e) 
    { 
     OpenFileDialog Open = new OpenFileDialog(); 
     Open.Filter = "RIFF/RIFX (*.Wav)|*.wav"; 
     Open.CheckFileExists = true; 
     Open.Multiselect = true; 
     Open.ShowDialog(); 
     LstFile.Items.Clear(); 
     foreach (string file in Open.FileNames) 
     { 
      LstFile.Items.Add(file); 
     } 
    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     LstFile.Items.Clear(); 
    } 

    private void BtnConvert_Click(object sender, RoutedEventArgs e) 
    {  Process p = new Process();  
      p.StartInfo.FileName = "cmd"; 
      p.StartInfo.UseShellExecute = false; 
      foreach (string fn in LstFile.Items) 
      { 
       string fil = "\""; 
       string gn = fil + fn + fil; 
       p.Start(); 
       p.StartInfo.Arguments = gn; 
      }    
     }  
    }  
} 

我用

string fil = "\""; 
string gn = fil + fn + fil; 

提供周围的情况下,完整的文件名的文件名中有空格引号。

我的问题是,我的程序打开CMD Put没有传递任何参数。我检查了如果filnames(list)工作正常,他们很好。看看这些例子,这是做到这一点的方式,但很明显什么是错的

+1

一个文本文件中设置'StartInfo.Arguments'之后您调用'开始()'看起来错 – 2012-07-17 14:46:57

+0

AFAIK那些在那里通过default.I刚添加System.Diagnostics程序 – Cesar 2012-07-17 14:48:31

+0

@ default.kramer更改位置没有改变什么 – Cesar 2012-07-17 14:50:32

回答

2

设置

StartInfo.Arguements 

之前,您启动的过程中,我建议做一个新的工艺类每次启动进程。

例如:

 foreach (string fn in LstFile.Items) 
     { 
      string fil = "\""; 
      string gn = fil + fn + fil; 

      Process p = new Process(); 
      p.StartInfo.FileName = "cmd"; 
      p.StartInfo.UseShellExecute = false; 
      p.StartInfo.Arguments = gn; 
      //You can do other stuff with p.StartInfo such as redirecting the output 
      p.Start(); 
      // i'd suggest adding p to a list or calling p.WaitForExit();, 
      //depending on your needs. 
     } 

如果你试图调用CMD命令,让你的arguements

"/c \"what i would type into the command Line\""

这是我做过什么快速的例子。它打开记事本

 Process p = new Process(); 
     p.StartInfo.FileName = "cmd"; 
     p.StartInfo.UseShellExecute = false; 
     p.StartInfo.Arguments = "/c \"New Text Document.txt\""; 
     p.Start(); 
     p.WaitForExit(); 
+0

+1:更好:) – leppie 2012-07-17 14:51:42

+0

我试过了,但结果是一样的。只是cmd,没有我的文件名或任何其他的迹象 – Cesar 2012-07-17 15:01:19

+0

@Cesar你想要做什么? – 2012-07-17 15:05:19