Hi,
ich habe ein kleines Problem. Ich will eine Kommandozeile aus einem Plugin heraus ausführen. Durch die Kommandozeile soll aus der angegebenen Textdatei eine Bilddatei erstellt werden. Momentan verwende ich dazu folgenden Code:
System.Diagnostics.Process.Start("cmd.exe"," /C C:\\Program Files\\Graphviz2.36\\bin\\dot.exe -Tpng C:\\Users\\Peter\\Downloads\\GraphOfText.txt >C:\\Users\\Peter\\Downloads\\output.png");
Wenn ich die Kommandozeile über die Eingabeaufforderung ausführe funktioniert es ohne Probleme. Wenn ich aber das Programm mit obrigen Code ausführe, dann wird zwar die Bilddatei erstellt, diese ist aber leer.
Hat jemand eine Idee, woran das liegen könnte?
Das Problem sind die Leerzeichen in den Pfaden, da musst du die einzelnen Parameter in " schreiben:
System.Diagnostics.Process.Start("cmd.exe", " /C \"C:\\Program Files\\Graphviz2.36\\bin\\dot.exe\" -Tpng \"C:\\Users\\Peter\\Downloads\\GraphOfText.txt\" > \"C:\\Users\\Peter\\Downloads\\output.png\"");
Du solltest dein Programm auch direkt ausführen können:
System.Diagnostics.Process.Start("C:\\Program Files\\Graphviz2.36\\bin\\dot.exe", "-Tpng \"-oC:\\Users\\Peter\\Downloads\\output.png\" \"C:\\Users\\Peter\\Downloads\\GraphOfText.txt\"");
Leserlicher wäre die Verwendung des @-Zeichens, s.a. [FAQ] Was bedeutet das @ (=at) vor String-Literalen? Und: Wissenswertes zu Escape-Sequenzen:
System.Diagnostics.Process.Start(@"C:\Program Files\Graphviz2.36\bin\dot.exe", "-Tpng ""-oC:\Users\Peter\Downloads\output.png"" ""C:\Users\Peter\Downloads\GraphOfText.txt""");