2012-07-17 63 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