Laden...

Externes Programm mit Anführungszeichen starten

Erstellt von Linus vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.535 Views
L
Linus Themenstarter:in
82 Beiträge seit 2005
vor 17 Jahren
Externes Programm mit Anführungszeichen starten

Tag Leute

Im Moment führe ich ein externes Programm wie folg aus:


Process RAR = new Process();
RAR.StartInfo.FileName = rarlab;
RAR.StartInfo.Arguments = (" " + rarpar + " " + bckdir + "\\" + text[i] + ".rar " + bcktmp + "\\" + text[i]);
RAR.Start();
RAR.WaitForExit();

Allerdings können die Parameter (Arguments) wie bckdir und/oder text leerzeichen enthalten und dann werden die Parameter nicht vollständig genommen.

In der Kommandozeile würde man die komplette Zeile einfach in " (Anführungsstriche) setzen... ihr kennt das ja.

Wie kann ich das Problem hier in c# lösen?

Gruß und thx in advance, Linus

Komm, kipps doch de Siffon rab!

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Linus,

ebenfalls mit Anführungzeichen.

""" oder @""""

herbivore

L
Linus Themenstarter:in
82 Beiträge seit 2005
vor 17 Jahren

Re!

Ich komm leider nicht mit dem @ klar, """ habe ich zuvor schoneinmal verwendet. Ich habs nun wie folgt:


RAR.StartInfo.FileName = (@"\" + rarlab);
RAR.StartInfo.Arguments = (" " + rarpar + " " + bckdir + "\\" + text[i] + ".rar " + bcktmp + "\\" + text[i] + "\"");

Das @ hab ich in unterschiedlicher Form schon in der ersten Zeile verbaut - scheint aber jedes mal falsch zu sein.

Das """ hab ich in der zweiten Zeile ganz am Schluss verbaut.

Wie gesagt, mit dem @ hab ich wohl noch meine Probleme. Wie geht das denn genau?

Gruß, Linus

Komm, kipps doch de Siffon rab!

B
1.529 Beiträge seit 2006
vor 17 Jahren

RAR.StartInfo.FileName = rarlab;
RAR.StartInfo.Arguments = rarpar + " \"" + bckdir + "\\" + text[i] + ".rar\" \"" + bcktmp + "\\" + text[i] + "\"";
L
Linus Themenstarter:in
82 Beiträge seit 2005
vor 17 Jahren

Re Borg!

Das funktioniert so nicht. Die Anführungsstriche müssen schon vor der Datei beginnen, nicht erst nach der Datei vor den Argumenten...

Trotzdem Danke für die Idee...

Herbivore, hast du noch ne Idee?

Gruß

Komm, kipps doch de Siffon rab!

B
1.529 Beiträge seit 2006
vor 17 Jahren

Hatte oben die Parameter auch in Anführungszeichen gesetzt => korrigiert.

Die Anführungsstriche müssen schon vor der Datei beginnen, nicht erst nach der Datei vor den Argumenten... Verstehe ich nicht. Die Paramter sind doch ganz vorn, dann der Archivname, dann die zu packenden Dateien.

rarpar + " \"" + bckdir + "\\" + text[i] + ".rar\" \"" + bcktmp + "\\" + text[i] + "\""

rarpar sind die Paramter.
" "" + bckdir + "\" + text_ + ".rar" ist ein Leerzeichen, Anführungszeichen, das Verzeichnis, daran angehängt Backslash, Dateiname und Extension und wieder Anführungszeichen.
"" + bcktmp + "\" + text_ + """ das gleiche wie oben, nur ohne Extension.

L
Linus Themenstarter:in
82 Beiträge seit 2005
vor 17 Jahren

Re Borg!

Es gibt zwei Teile. Zum einen FileName (hier rarlab) und zum anderen Arguments (hier " " + rarpar + " " + bckdir + "\" + text_ + ".rar " + bcktmp + "\" + text_ )

Nehmen wir mal an die Argumente wären nur 'test argument'.

Nun will ich rarlab mit den Argumenten wie folgt starten: "rarlab test argument"

Das Beispiel wie es du mir gegeben hast, startet aber so: rarlab "test argument"

Das funktioniert leider so nicht...

Linus

Komm, kipps doch de Siffon rab!

T
512 Beiträge seit 2006
vor 17 Jahren

Schonmal probiert was auf die Art zu starten?

Probier mal über Ausführen "cmd /k echo test" mit Anführungszeichen...
Oder probiers in nem Command Prompt einzugeben...

Da kommt nur Mist raus.

e.f.q.

Aus Falschem folgt Beliebiges

L
Linus Themenstarter:in
82 Beiträge seit 2005
vor 17 Jahren

Das was ich tun möchte funktioniert in cmd-prompt...

Lieder bekomm ichs aber nicht in meinem c# programm hin

Komm, kipps doch de Siffon rab!

B
1.529 Beiträge seit 2006
vor 17 Jahren

@linus:
Nein tut es nicht.
Nehmen wir mal an du willst das folgende Kommando absetzen:
rar a -oo "C:\my Backup\myArchive.txt.rar" "C:\my docs\myArchive.txt"

dann müsstest du folgendes habe:
rarpar = a -oo
bckdir = C:\my Backup
text* = myArchive.txt
bcktmp = C:\my docs

Die Zeile

rarpar + " "" + bckdir + "\" + text_ + ".rar" "" + bcktmp + "\" + text_ + """

macht daraus:
a -oo "C:\my Backup\myArchive.txt.rar" "C:\my docs\myArchive.txt"

Das ist doch genau das, was du willst?

1.665 Beiträge seit 2006
vor 17 Jahren

Für solche Sachen, verwende doch erst mal String.Format() wo du komplizierte Strings zusammenbaust

B
1.529 Beiträge seit 2006
vor 17 Jahren

Stimmt.
Das sieht dann so aus:

string.Format( @"{0} ""{1}\{2}.rar"" ""{3}\{2}"", rarpar, bckdir, text[i], bcktmp );
L
Linus Themenstarter:in
82 Beiträge seit 2005
vor 17 Jahren

YEAH!!!

Borg, habs verstanden, funktioniert!!!

Vielen Dank an Alle!

Gruß, Linus

Komm, kipps doch de Siffon rab!

1.665 Beiträge seit 2006
vor 17 Jahren

lol 😁