2013-12-17 79 views
8

我有一個控制檯文件,這需要6個參數如何使用C#

enter image description here

要運行這個exe文件,我創建一個批處理文件來傳遞參數給一個批處理文件,

enter image description here

現在,我需要將這個參數從我的一個Windows應用程序發送到批處理文件。這是代碼:

  string consolepath = @"E:\SqlBackup_Programs\console-backup\Backup_Console_App"; 
      string Pc = "VARUN-PC"; 
      string database = "Smart_Tracker"; 
      string UserName = "sa"; 
      string Password = "[email protected]"; 
      string bacPath = @"D:\TEST"; 

      System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
      proc.StartInfo.FileName = System.Configuration.ConfigurationManager.AppSettings["BATCH_FULLBACKUP"].ToString().Trim(); 
      proc.StartInfo.Arguments = String.Format(consolepath,Pc,database,UserName,Password,"F",bacPath); 
      //set the rest of the process settings 
      proc.Start(); 

但它不工作。我試圖改變我的批處理文件一樣,

關閉@echo %1%2%3%4%5%6%7

關閉@echo

但也不能工作。

錯誤圖片:

回答

6

Arguments應該seperated通過space

方法1:

proc.StartInfo.Arguments =consolepath+" "+Pc+" "+database+" "+UserName+" "+Password+" "+"F"+" "+bacPath; 

方法2:使用String.Format()

proc.StartInfo.Arguments =String.Format("{0} {1} {2} {3} {4} {5} {6}",consolepath,Pc,database,UserName,Password,"F",bacPath); 

解決方案2:你不應該在批處理文件

嘗試硬編碼參數值這:改變蝙蝠ch文件如下

%1 %2 %3 %4 %5 %6 %7 
+0

當我使用上面這兩種方法我的批處理文件運行EXE, 根據自己的價值,我的意思是它沒有從這個參數值, 所以,是否有任何需要更改批處理文件? 當前我的批處理文件與顯示上圖像相同, 我在代碼「E:\」中給出了不同的最後一個參數,但它的後續批處理文件路徑仍然存在。 –

+0

@VARUNNAYAK:實際上它可以,確定讓我檢查它。 –

+0

@VARUNNAYAK:你檢查了嗎?它爲我工作。 –

4

你缺少你的String.Format呼叫的格式。

proc.StartInfo.Arguments應該更像

String.Format("{0} {1} {2} {3} {4} {5} {6}", consolepath,Pc,database,UserName,Password,"F",bacPath); 

但是,請記住,你的論點可能會包含空格。我會這樣做。

var args = new string[] { consolepath,Pc,database,UserName,Password,"F",bacPath }; 
var startupInfo = String.Join(" ", args.Select(x => "\"" + x + "\"")); 
+0

由於只有7個參數,不需要使用「{7}」。 –

+0

@sudhaker,謝謝。固定 –