Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Externes Programm mit Anführungszeichen starten
Linus
myCSharp.de - Member



Dabei seit:
Beiträge: 82
Herkunft: Meckenbeuren am Bodensee

Themenstarter:

Externes Programm mit Anführungszeichen starten

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Linus,

ebenfalls mit Anführungzeichen.

"\"" oder @""""

herbivore
private Nachricht | Beiträge des Benutzers
Linus
myCSharp.de - Member



Dabei seit:
Beiträge: 82
Herkunft: Meckenbeuren am Bodensee

Themenstarter:

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
Borg
myCSharp.de - Member



Dabei seit:
Beiträge: 1.529
Herkunft: Berlin, Germany

beantworten | zitieren | melden


RAR.StartInfo.FileName = rarlab;
RAR.StartInfo.Arguments = rarpar + " \"" + bckdir + "\\" + text[i] + ".rar\" \"" + bcktmp + "\\" + text[i] + "\"";
private Nachricht | Beiträge des Benutzers
Linus
myCSharp.de - Member



Dabei seit:
Beiträge: 82
Herkunft: Meckenbeuren am Bodensee

Themenstarter:

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
Borg
myCSharp.de - Member



Dabei seit:
Beiträge: 1.529
Herkunft: Berlin, Germany

beantworten | zitieren | melden

Hatte oben die Parameter auch in Anführungszeichen gesetzt => korrigiert.
Zitat
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.
private Nachricht | Beiträge des Benutzers
Linus
myCSharp.de - Member



Dabei seit:
Beiträge: 82
Herkunft: Meckenbeuren am Bodensee

Themenstarter:

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
Traumzauberbaum
myCSharp.de - Member



Dabei seit:
Beiträge: 512

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Linus
myCSharp.de - Member



Dabei seit:
Beiträge: 82
Herkunft: Meckenbeuren am Bodensee

Themenstarter:

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
Borg
myCSharp.de - Member



Dabei seit:
Beiträge: 1.529
Herkunft: Berlin, Germany

beantworten | zitieren | melden

@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?
  • private Nachricht | Beiträge des Benutzers
    JunkyXL
    myCSharp.de - Experte

    Avatar #avatar-3234.gif


    Dabei seit:
    Beiträge: 1.665
    Herkunft: Ein paar Bytes südlich von string

    beantworten | zitieren | melden

    Für solche Sachen, verwende doch erst mal String.Format() wo du komplizierte Strings zusammenbaust
    private Nachricht | Beiträge des Benutzers
    Borg
    myCSharp.de - Member



    Dabei seit:
    Beiträge: 1.529
    Herkunft: Berlin, Germany

    beantworten | zitieren | melden

    Stimmt.
    Das sieht dann so aus:

    string.Format( @"{0} ""{1}\{2}.rar"" ""{3}\{2}"", rarpar, bckdir, text[i], bcktmp );
    private Nachricht | Beiträge des Benutzers
    Linus
    myCSharp.de - Member



    Dabei seit:
    Beiträge: 82
    Herkunft: Meckenbeuren am Bodensee

    Themenstarter:

    beantworten | zitieren | melden

    YEAH!!!

    Borg, habs verstanden, funktioniert!!!

    Vielen Dank an Alle!

    Gruß, Linus
    Komm, kipps doch de Siffon rab!
    private Nachricht | Beiträge des Benutzers
    JunkyXL
    myCSharp.de - Experte

    Avatar #avatar-3234.gif


    Dabei seit:
    Beiträge: 1.665
    Herkunft: Ein paar Bytes südlich von string

    beantworten | zitieren | melden

    lol
    private Nachricht | Beiträge des Benutzers