neXus: zeichen

ich will einen batchbefehl über c durchführen und rufe dazu,

system (varname);

auf. Damit zb eine datei geöffnet wird. In varname steht der vollständige Pfad der Datei, jedoch ist das Problem dabei, dass der Pfad leerzeichen enthält und dadurch erkennt das command fenster nur alls bis zum leerzeichen.

Es gibt dafür aba eine Möglichkeit und zwar man setzt den Pfad unter " " aba ich will den varname nicht verändern..

Hat wer von euch a idee was ich da machn könnt?..

könnte das irgendwie funktioniern?? system (""varname"");

mfg ItchydieMaus

  1. Hi neXus,

    könnte das irgendwie funktioniern?? system (""varname"");

    Beschäftige dich mit Stringverknüpfung.

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    sh:( fo:) rl:( br:> ch:~ n4:& ie:% mo:) va:| de:< zu:| fl:( ss:) ls:[
  2. Hello,

    ich will einen batchbefehl über c durchführen und rufe dazu,

    system (varname);

    Dann benutze vorher http://de.php.net/manual/en/function.escapeshellcmd.php

    Die Funktion ist genau gegen diese Fehlermöglichkeit ersonnen worden.

    Harzliche Grüße vom Berg
    esst mehr http://www.harte-harzer.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hello,

      ich will einen batchbefehl über c durchführen [...]

      ^^^

      Dann benutze vorher http://de.php.net/manual/en/function.escapeshellcmd.php

      ^^^

      Die Funktion ist genau gegen diese Fehlermöglichkeit ersonnen worden.

      aber eben in php. ;-)

      ich denke mit romys rat und dem voranstellen und anfuegen von wahlweise jeweils einem char '"' oder einem string "\"" ist hier eher geholfen.

      prost
      seth

      1. Hello,

        ich will einen batchbefehl über c durchführen [...]

        Oh, tut mir leid.

        Allerdings gelten für C die gleichen Regeln für Steuer-/Sonderzeichen in der Shell.
        Könnte man also nun nachlesen (auch bei PHP), welche und wie die zu escapen sind.
        Und Stringfunktionen gibt es unter C auch einige. Außerdem könnte man sich eine Replace-Funktion oder eine Escape-Funktion sicher auch selber schreiben.

        Häkchen helfen nicht unbedingt.

        Harzliche Grüße vom Berg
        esst mehr http://www.harte-harzer.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
  3. Hi,

    ich will einen batchbefehl über c durchführen und rufe dazu,

    (Du meinst C?)

    system (varname);

    sytem(2) ist aus verschiedenen Gründen problematisch. Da Du Anfänger in C zu sein scheinst würde ich Dir vorschlagen Dein Vorhaben genauer zu beschreiben. Insbesondere wenn root darin verwickelt sein könnte oder es auf Windows läuft.

    Es gibt dafür aba eine Möglichkeit und zwar man setzt den Pfad unter " " aba ich will den varname nicht verändern..

    Hat wer von euch a idee was ich da machn könnt?..

    Klar. Wie romy schon so trefflich anmerkte: Argument zusammenbasteln. Wenn Du nicht mehr als nur Anführungsstriche benötigst und die Variable mit dem Pfad nicht selber verändern möchtest brauchst Du eine temporäre Variable. Diese muß mindestens 3 Zeichen (",",\0) mehr fassen können (malloc(3)) als der Pfad lang (strlen(3)) ist. Da hinein packst Du '"' + $PATH + '"' + '\0' (strncat(3)). Das Ergebnis packst Du dann in system(3).

    Solltest Du höhere Weihen in C anstreben würde ich aber doch dringend das Studium der exec(3) Familie empfehlen.

    so short

    Christoph Zurnieden