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!
Hallo Linus,
ebenfalls mit Anführungzeichen.
""" oder @""""
herbivore
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!
RAR.StartInfo.FileName = rarlab;
RAR.StartInfo.Arguments = rarpar + " \"" + bckdir + "\\" + text[i] + ".rar\" \"" + bcktmp + "\\" + text[i] + "\"";
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!
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.
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!
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
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!
@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?
Für solche Sachen, verwende doch erst mal String.Format() wo du komplizierte Strings zusammenbaust
> Codejunky <
Stimmt.
Das sieht dann so aus:
string.Format( @"{0} ""{1}\{2}.rar"" ""{3}\{2}"", rarpar, bckdir, text[i], bcktmp );
YEAH!!!
Borg, habs verstanden, funktioniert!!!
Vielen Dank an Alle!
Gruß, Linus
Komm, kipps doch de Siffon rab!