2016-12-21 3 views
1

In meinem C# Code ausgeführt habe ichErstellen cmd Prozess, java

processInfo = new ProcessStartInfo("do.cmd"); 
processInfo.CreateNoWindow = false; 
processInfo.UseShellExecute = false; 

und in meinem do.cmd Ich habe

@echo off 
set CONFIG_FILE=./some.properties 
set DEFCONFIG_FILE=./more.properties 
set EDA_ARGS=-config %CONFIG_FILE% -defaultconfig %DEFCONFIG_FILE% 
set JAVA_ARGS=-Xmx256M 
set BOOTCLASSPATH=../lib/1.jar;../lib/2.jar;../lib/3.jar;../4.jar;../5.jar 
:run_erp 
java -Xbootclasspath/p:%BOOTCLASSPATH% %JAVA_ARGS% -jar ../lib/RUNME.jar %EDA_ARGS% 
goto end 
:end 

Ich erhalte eine Fehlermeldung nicht in der Lage RUNME.jar zu finden, Wenn ich jedoch die Datei "do.cmd" manuell in einer Eingabeaufforderung ausfühle, funktioniert es einwandfrei. Aber wenn ich einen Prozess in C# erstellen und ausführen, erhalte ich den obigen Fehler.

Also meine Frage ist, wie kann ich ein Cmd in C# ausführen, um es in einem Cmd-Prompt auszuführen?

+2

Haben Sie versucht, das 'WorkingDirectory' zu setzen? –

+2

Was bedeutet ../lib/, wenn Sie von C# aus arbeiten? Es macht Annahmen über das aktuelle Verzeichnis, das sich wahrscheinlich von dem unterscheidet, das Sie beim Ausführen von do.cmd haben. –

+0

@KirkWoll ja, aber ich bekomme das gleiche Problem. – conterio

Antwort

1

Ich konnte das Problem beheben, indem ich drei Dinge tat.

  1. die Objekterstellung ändert nur den Befehl enthalten (weil ich Arbeitsverzeichnis eingestellt)

    processInfo = new ProcessStartInfo("do.cmd"); 
    
  2. Einstellung des Arbeitsverzeichnisses, wo meine do.cmd ist

    processInfo.WorkingDirectory = Directory.GetCurrentDirectory() + $"\\somedir\\bin\\"; 
    
  3. die Einstellung UseShellExecute bis true:

    processInfo.UseShellExecute = true; 
    
+0

Obwohl Sie selbst beantwortet , mach weiter und markiere deine Antwort mit dem Häkchen. –

Verwandte Themen