2013-05-29 98 views
9

我希望這是一個簡單的問題,但我在我的C#應用​​程序中有以下代碼,出於某種原因它不會執行我指向的批處理文件。從C調用批處理文件#

private void filesystemwatcher_Renamed(object sender, System.IO.RenamedEventArgs e) 
{ 
    if (File.Exists("C:\\Watcher\\File.txt")) 
    { 
     System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
     proc.EnableRaisingEvents = false; 
     proc.StartInfo.FileName = "C:\\Watcher\\Cleanup.bat"; 
     proc.Start(); 
     MessageBox.Show("Cleaned up files, your welcome."); 

    } 
    else 
    { 
     label4.Text = "Error: No file found"; 
    } 
} 

它會顯示正確的消息框,所以我知道它是達到代碼範圍,但我沒有看到一個cmd框彈出或任何會表明它剛剛運行的批處理文件。我也可以告訴,因爲cleanup.bat只是重命名一個文件,就是這樣。收到消息框後,文件名稱沒有改變。

如果我手動雙擊批處理文件,它工作得很好。我也已將批處理文件的權限調整爲適用於所有人的完全控制(僅用於測試目的)

+2

的當前目錄執行**你**的歡迎。 –

回答

21

這應該工作

System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
proc.StartInfo.FileName = "C:\\Watcher\\Cleanup.bat"; 
proc.StartInfo.WorkingDirectory = "C:\\Watcher"; 
proc.Start(); 

您需要,否則設置WorkingDirectory該命令將在什麼是調用應用程序

+0

非常感謝! – Bit10Bytes

4

嘗試將proc.StartInfo.UseShellExecute設置爲true;這告訴操作系統執行查找文件擴展名以在註冊表中查找正確的處理程序。

相關問題