2016-07-20 35 views
0

Ich versuche, Befehlszeilenargumente aus der C# -Konsolenanwendung auszuführen.Befehlszeilenargumente mit Änderungsverzeichnis

-Code ist:

string[] MyArguments = { "/c", @"'C:\Program Files (x86)\salesforce.com\Data Loader\bin\process.bat'", "\"C:\\Program Files (x86)\\salesforce.com\\Data Loader\\samples\\conf\"", "accountMasterProcess" }; 

ProcessStartInfo startInfo = new ProcessStartInfo(); 
      Process process; 
      startInfo.FileName = "cmd.exe"; 
      startInfo.Arguments = String.Join(" ", MyArguments); 


      process = Process.Start(startInfo); 
      startInfo.RedirectStandardError = true; 
      startInfo.RedirectStandardOutput = true; 
      process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
      process.StartInfo.RedirectStandardOutput = true; 
      process.StartInfo.UseShellExecute = false; 
      process.OutputDataReceived += (sender, arg) => Console.WriteLine("received output: {0}", arg.Data); 
      process.Start(); 
      //process.BeginOutputReadLine(); 
      process.WaitForExit(); 
      string output = process.StandardOutput.ReadToEnd(); 
      string error = process.StandardError.ReadToEnd(); 

      exitCode = process.ExitCode; 

      Console.WriteLine("output>>" + (String.IsNullOrEmpty(output) ? "(none)" : output)); 
      Console.WriteLine("error>>" + (String.IsNullOrEmpty(error) ? "(none)" : error)); 
      Console.WriteLine("ExitCode: " + exitCode.ToString(), "ExecuteCommand"); 
      process.Close(); 

Ich habe keine Ergebnisse in cmd Fenster sehen. Die tatsächlichen Argumente in cmd Fenster ist:

C:\Program Files (x86)\salesforce.com\Data Loader\bin>process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\samples\conf" accountMasterProcess 

Bitte helfen

+2

Was ist mit dem '/' vor C: \? –

+0

Es war ein Fehler. Es hätte sein müssen, es als Befehl zu betrachten. Danke für das Zeigen – user4895544

Antwort

0

hinzufügen /c auf Ihre Argumente. Dies macht cmd.exe erkennen, dass Sie einen Befehl übergeben.

Auch am Anfang von string[] MyArguments = { @"/C:\\Program Files (x86)\\salesforce.com\\Data Loader\\bin", "process.bat", "\"PathName"", "BeanName"}; gibt es eine / vor C:, die einen Fehler in cmd verursachen wird.

+0

also wo soll ich hinzufügen/c wenn dies die Argumente sind 1. Argument ist für das Ändern des Verzeichnisses, Rest sind cmd Argumente {@ "C: \\ Programme (x86) \\ salesforce.com \\ Data Loader \\ bin "," process.bat "," \ C: \\ Programme (x86) \\ Pfadname "", "BeanName"}; – user4895544

+0

Am Anfang von MyArguments 'string [] MyArguments = {"/ c", @ "/ C: \\ Programme (x86) \\ salesforce.com \\ Data Loader \\ bin", "process.bat", "\" PathName "", "BeanName"}; ' –

+0

Es funktioniert nicht – user4895544