C# Fragen eines C# Newbies - .cmd File in Projekt inkludieren [Visual Studio]

Kingfisher OK

Rear Admiral
Registriert
Dez. 2007
Beiträge
5.161
Hallo zusammen,

ich bin derzeit an einem C# Projekt, welches an einer Stelle eine .cmd Datei ausführt. Den Dateipfad habe ich wie folgt angegeben:
Code:
Param.StartCMD(currentDir + @"\PrintArp.cmd");

Ich möchte aber nicht, dass ich die PrintArp.cmd datei immer im selben Ordner mitführen muss wie die .exe Datei.

Meine Frage:

Wie kann ich die .cmd Datei inkludieren, sodass ich auf diese im Projekt zugreifen kann?

Grüße
 
Nilson schrieb:
musst du mal testen ob das auch mit .cmd Dateien läuft, sollte aber.
Wie startet man denn eine eingebettete cmd? Die Funktionen zu Starten eines Prozesses, die mir bekannt sind benötigen eine Pfadangabe. Ich denke man muss die cmd-Datei zunächst erstellen, zumindest temporär.
 
Muss man mal gucken wie man das am besten umsetzt. Ob man dann kurz ne Temporäre Datei erstellt.
 
Ganz ehrlich: So einen umständlichen Workaround würde ich nicht verwenden. C# ist doch viel mächtiger als Batch. Wenn die Batch-Datei nicht allzu kompliziert ist, würde ich die Funktionalität einfach in C# nachbilden. Das ist einfach viel sauberer und du kannst viel besser auf Fehler reagieren etc.
 
Ja ich habe auch versucht an CMD den Befehl zu übergeben aber es hat nicht geklappt...

Im Prinzip steht in der Batch Datei nur eine Zeile:

Arp -A >ArpListe.csv

Öffne ich cmd.exe mit den Befehlen als String, geht es aber leider nicht...

Wäre aber natürlich das einfachste.
 
Und wo genau ist jetzt das Problem den ARP Aufruf direkt in C# zu machen und das Ergebnis aus dem Standardoutput Stream zu lesen? z.B.:

Code:
      // ARP Aufrufen und Standard Output Stream umleiten
      System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo("ARP.EXE", "-A");
      startInfo.RedirectStandardOutput = true;
      startInfo.UseShellExecute = false;
      System.Diagnostics.Process proc = System.Diagnostics.Process.Start(startInfo);

      // Inhalt vom Output Stream in die String Variable output einlesen
      string output = proc.StandardOutput.ReadToEnd();
      // warten bis Prozess beendet wird
      proc.WaitForExit();

      // Inhalt vom Output Stream (Variable output) in eine Datei schreiben
      System.IO.File.WriteAllText(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ArpListe.csv"), output);
 
Zurück
Oben