Problem mit Anführungszeichen

  • Hallo Community

    Das folgende Script hängt an der Stelle mit "%1" sagt SciTE. ?(
    Ohne die Anführungsstriche läuft es und übergibt den Parameter an die Batchdatei, die mit Filewrite erzeugt und dann ausgeführt wird.
    Wegen der Leerzeichen in den Pfadnamen MÜSSEN die Anführungszeichen aber sein.

    Meine Frage: Wie muß ich "%1" "einkleiden" damit diese 4 Zeichen korrekt in die Batchdatei geschrieben werden ?

    Mit fragendem Gruß Macrostop

  • @ KriZza
    Danke für Deinen Rat, aber das hab ich alles schon durchprobiert, auch mit "Chr(34)" usw.
    Auch hier hängt´s am "%1"

    Code
    FileWrite($file, "set image_path="%1"" & @CRLF)


    Wer wird das Rätsel lösen ?

    MfG Macrostop

    Einmal editiert, zuletzt von Macrostop (9. Oktober 2008 um 00:58)

  • JAU, guter Rat KriZza ! :thumbup:

    Das funktioniert :

    Code
    FileWrite($file, "echo. pushd """ & "%1" & """ " & @CRLF); =NOK


    Ergebnis:
    "echo. pushd "%1" "

    Fall gelöst.
    Den Besten Dank von Macrostop

  • Danke Greenhorn

    Grade mit den Anführungszeichen wäre eine eigene FAQ-Seite zu füllen.
    Findet man zu dem Thema speziell etwas ?
    Ausführliche Beispiele wären nicht schlecht !

    Gruß und gute Nacht :thumbup:
    Macrostop

  • ´Morgen peethebee

    Leider sind die Aussagen in der FAQ etwas mager, und immer wieder treten neue Konstellationen auf,
    die profundes Wissen um die Positionierung von Anführungsstrichen und -&- vorraussetzen.
    Einziges Beispiel aus der FAQ:
    "MsgBox(0, "Example", "Meine Variable ist " & $msg)"
    Frage: Wie soll ich das auf ein Script wie dieses anwenden:
    Script.au3

    Code
    $duf = 1
    $dav = 8
    $dov = 4
    $dif = 5
    $error = "error"
    $Text = "3131231"
    ShellExecute("batch.cmd", $duf & " " & $dov & " " & $dav &  " " & $error & " " & Chr(34) & $Text & Chr(34))


    Batch.cmd


    Das Script Übergibt den Wert für $Text nur deshalb in "", weil Chr(34) verwendet wird.
    Dazu schweigt die FAQ . . .
    Und wie kann ich das Script dazu bringen auch die Variable $error in "" zu setzen ? :?:
    Auch hier ist die FAQ überfragt.
    So wird jeder Script (zumindest für mich als Anfänger) zum reinen Ratespiel. :wacko:
    Wo sind logische Definitionen und ausführliche Beispiele für den Einsatz von "" und & und Chr(34) ? :?:
    Stell´ich ungewöhnliche Fragen oder wissen alle anderen bescheid ?

    Gruß Macrostop

    • Offizieller Beitrag

    Alle anderen wissen bescheid ;).

    Noch mal in Kurzform:
    Strings werden in " und " eingeschlossen. Diese Zeichen sind äquivalent ersetzbar durch ' und '. Mischen ist nicht möglich.
    Strings verknüpfen:

    [autoit]

    "String" & ", String2" & ", String3"

    [/autoit]


    Mit verschiedenem Zeichen:

    [autoit]

    "String" & ", String2" & ', String3'

    [/autoit]


    Mit Variablen, die zu Strings auswertbar sind:

    [autoit]

    "String" & @CRLF & ", String2" & $meineVariable

    [/autoit]


    " in Strings:
    1. ' ' außen nutzen:

    [autoit]

    'Dieser Text ist "schön" '

    [/autoit]

    oder
    2. " innen durch "" ersetzen:

    [autoit]

    "Dieser Text ist ""schön"" "

    [/autoit]

    Chr(34) ist dank der obigen Regeln nicht nötig.

    Alles logisch -- wirklich :). Aber es kann im Kopf bisschen schwierig werden, man muss halt bisschen aufpassen und den String vielleicht schrittweise auf- und ausbauen.

    Happy Coding,
    peethebee

  • Hallo peethebee
    Besten Dank für Deine Erläuterungen.
    Hab´versucht, sie auf mein Script anzuwenden, Fehlanzeige!
    Ich hoff´es ist nicht zuviel verlangt, wenn Du das Script.au3 bitte korrigierst.

    Code
    $duf = 1
    $dav = 8
    $dov = 4
    $dif = 5
    $error = "error"
    $Text = "3131231"
    ShellExecute("batch.cmd", $duf & " " & $dov & " " & $dav &  " " & $error & " " & Chr(34) & $Text & Chr(34))


    Egal was ich schreib, er Wert "error" wird nur ohne "", oder als "$error" übergeben. :wacko:

    Gruß Macrostop

  • @peethebe
    Danke daß Du Deine kostbare Zeit hier aufwendest.
    Wie oben gepostet werden zwei Dateien erstellt: script.au3 und batch.cmd.

    script.au3

    Code
    $duf = 1
    $dav = 8
    $dov = 4
    $dif = 5
    $error = "error"
    $Text = "3131231"
    ShellExecute("batch.cmd", $duf & " " & $dov & " " & $dav & " " & $error & " " & Chr(34) & $Text & Chr(34))

    batch.cmd

    Script.au3 definiert die Variablen und übergibt sie an batch.cmd.
    Screenshot:
    Tweak XP.zip
    Erkennbar: Der vierte Wert - error - wird ohne "" übergeben.
    Frage:
    Wie muß das Script lauten damit "error" übergeben wird.

    Danke im vorraus
    Gruß Macrostop

  • Entweder

    Spoiler anzeigen
    [autoit]

    $duf = 1
    $dav = 8
    $dov = 4
    $dif = 5
    $error = "error"
    $Text = "3131231"
    ShellExecute('batch.cmd', $duf & ' ' & $dov & ' ' & $dav & ' "' & $error & '" "' & $Text & '"')

    [/autoit]

    oder auch

    Spoiler anzeigen
    [autoit]

    $duf = 1
    $dav = 8
    $dov = 4
    $dif = 5
    $error = "error"
    $Text = "3131231"
    ShellExecute("batch.cmd", $duf & " " & $dov & " " & $dav & " " & Chr(34) & $error & Chr(34) & " " & Chr(34) & $Text & Chr(34))

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Ooooooder ...

    [autoit]

    $error = '"error"'

    [/autoit][autoit]

    $this = '"Dieser" '
    $string = "'String' "
    $contains = '"enthält" '
    $many = "'viele' "
    $double = '"doppelte" '
    $and = "'und' "
    $single_quotes = "'einfache Anführungszeichen'"

    [/autoit][autoit][/autoit][autoit]

    ConsoleWrite ($this & $string & $contains & $many & $double & $and & $single_quotes & @CR)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]


    Gruß


  • Hallo Greenhorn & Community
    Vielen Dank für Eure informativen Beispiele.
    Nach und nach kommt ein bischen Licht in meinen "AutoIt-Dschungel".
    Bin begeistert daß die Community hier tolle Hilfe anbietet. :thumbup:

    Nochmals Danke von Macrostop