2013-12-17 11 views
8

Ho un file di console, che prende 6 argomentiCome passare parametri a un file batch utilizzando C#

enter image description here

Per eseguire questo exe, creo un file batch,

enter image description here

Ora, ho bisogno di inviare questo parametro al file batch dalla mia unica applicazione Windows. Questo è il codice:

  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(); 

Ma non funziona. Ho provato a cambiare il mio file batch come,

@echo off % 1% 2% 3% 4% 5% 6% 7

@echo off

, ma che non ha funzionato neanche.

Errore Image:

risposta

6

Arguments dovrebbe essere seperated da space.

Metodo 1:

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

Metodo 2: usando String.Format()

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

Soluzione 2: non dovrebbe hardcode i valori dei parametri nel file batch

Try Questo: cambia il Bat ch file come sotto

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

Quando uso questo metodo sopra entrambi i miei file esegui exe, in base al suo valore, intendo che non ha preso valori da questo argomento, quindi, c'è qualche modifica richiesta nel file batch ??? Attualmente il mio file batch è uguale a quello dell'immagine superiore, Io do gli ultimi ultimi argomenti nel codice "E: \", ma continuo a seguire il percorso del file batch. –

+0

@VARUNNAYAK: in realtà funziona, ok fammi controllare. –

+0

@VARUNNAYAK: lo hai controllato? sta funzionando per me. –

4

ti manca un formato per la chiamata String.Format.

proc.StartInfo.Arguments dovrebbe essere più simile a

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

Tuttavia, tenere a mente che le sue argomentazioni potrebbero contenere spazi bianchi. Lo farei.

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

'{7}' non è richiesto in quanto vi sono solo 7 argomenti. –

+0

@sudhaker, grazie. corretto –

Problemi correlati