Alternative zu @Scriptdir wegen abschliessendem Back-Slash

  • Hallo an Alle,

    ich hoffe es ist nur ein kleines Problem:

    Ich benutze mein Programm mal vom Netzlaufwerk, mal vom Stick, mal von der Festplatte...

    die Variable $Logfile sieht so aus: $Logfile = @Scriptdir & "\HW-Summary\" & $sDateiname & $sGraka & ".PNG"

    Das Problem: Wenn ich das Proggi vom USB-Stick ausführe ist es im root-Verzeichnis und @Scriptdir packt einen abschließenden Back-Slash hinzu. Wie kann ich das umgehen, bzw. vermeiden.
    Nachfolgende Öffnungs.- und Kopierversuche schlagen nämlich fehl wg des 2. Backslash...

  • Da es nur ein normaler String ist kann man ihn auch ganz normal wie ein String bearbeiten.

    Die Möglichkeiten hierzu wären ebenso vielfältig.

    Eine einfache Methode wäre:

    AutoIt
    $Logfile = StringReplace($Logfile, "\\", "\", 0, 1)

    Oder gleich eine Funktion verwenden die deine Pfade sauber aufbereitet:

    AutoIt
    #include <WinAPIFiles.au3>
    [...]
    $Logfile = _WinAPI_GetFullPathName($Logfile)
  • Die Möglichkeiten hierzu wären ebenso vielfältig.

    hipfzwirgel :

    Eine weitere dieser vielfältigen Möglichkeiten wäre z.B. auch _WinAPI_PathAddBackslash :

    AutoIt
    #include <WinAPIShPath.au3>
    [...]
    $Logfile = _WinAPI_PathAddBackslash(@ScriptDir) & "HW-Summary\" & $sDateiname & $sGraka & ".PNG"

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Guten Morgen AspirinJunkie und Musashi,

    da ich gestern eine schnelle Lösung brauchte habe ich kurzerhand die StringReplace-Methode genutzt. Hat super funktioniert. Insofern kann ich das Thema als erledigt betrachten.
    Ich werde mir aber die beiden anderen Lösungen noch anschauen und ggf. eine Antwort posten.

    Vielen lieben Dank an euch beide.