Zusammengestzte Variablen

  • So hallo noch mal,


    ich hätte da noch mal eine Kuzfrage, hoffe ich doch mal. Wie setzte ich eine Variable mit einem Pfad richtig zusammen: Ist dass so richtig:


    AutoIt
    Global $sFilePath = '$usb' & "\PC-PREP\CUSTOM"

    Das $usb ist ein wert der vorher durch eine Funktion bereitgestellt wird und einen Laufwerksbuchstaben liefert d: e: oder f: etc. Dass ich solche Sachen in Pfaden korrekt zusammensetzen :rock: kann ist für mich extrem wichtig.


    Vielen Dank i.V.



    lg



    chris

  • Jo das dachte ich mir auch aber es funzt nicht, ok muss ich doch was mehr ausholen. Das Script soll ermitteln ob es sich auf einem Wechselmedium mit dem Unterverzeichnis PC-PREP\CUSTOM befindet, bzw, von dort gestartet wurde, dazu soll es zuvor den Laufwerksbuchstaben ermittln, was die Funktion auch tut. Und nur dann soll er etwas tun, nämlich eine Synchronisation durchführen


  • oh mein Gott...

    Zeile 5: Globales $usb funktioniert nicht wegen ' und weil es hier noch leer ist!

    Zeile 12: (Globales) $usb funktioniert nicht, weil in den String integriert und es immer noch leer ist!

    Zeile 33: $usb wird LOKAL gesetzt

    Zeile 38: Lokales $usb wird deklariert und nie an irgendwas übergeben/genutzt.

  • Global $sFilePath = '$usb' & "\PC-PREP\CUSTOM"

    ...

    Local $source = '$usb\PC-PREP\CUSTOM'

    Du hast immer noch den Fehler drin, den Moombas bereits angemerkt hat !

    Du darfst die Variable $usb nicht in Anführungszeichen setzen. Dann wird sie wie ein Text behandelt.


    Edit : Moombas war etwas schneller ;) .

    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."

  • ok, wenn man dat halt zwischen Tür und Angel macht, mit der Variable die noch leer ist, logisch, war blödsinn, habs jetzt hinbekommen, hoffe da ist jetzt nix mehr dran auszusetzen;)


    vielen Dank noch mal und

    schönen Abend

  • ok, wenn man dat halt zwischen Tür und Angel macht, mit der Variable die noch leer ist, logisch, war blödsinn, habs jetzt hinbekommen, hoffe da ist jetzt nix mehr dran auszusetzen;)

    Na ja, wie man es nimmt. Exemplarisch möchte ich nur folgende Punkte benennen :

    AutoIt
    Func DetectLWprep()
     local $var = DriveGetDrive( "all" )
     global $usb="Not found"
    ...

    Global-Deklarationen innerhalb von Funktionen, hier also global $usb="Not found", sollte man vermeiden. Die Variable $usb gilt vor dem Aufruf der Funktion, bzw. falls die Funktion nicht aufgerufen wird, als undeklariert (im globalen Gültigkeitsbereich).Bei Deinem Miniskript klappt das zwar, bei längeren Skripten wird es aber mit Sicherheit zu Fehlern führen.

    AutoIt
    ...
      if @Scriptdir = $sFilePath Then
                     Local $source = $usb &"\PC-PREP\CUSTOM"
                     Local $dest = 'C:\Users\Administrator\Downloads'
                     sync()
      EndIf
    ...

    Auf Variablendeklarationen, also Local ...  , innerhalb 'bedingter Anweisungen' würde ich auch verzichten (zum Glück ist AutoIt in diesen Dingen recht nachsichtig ;) ) .

    Deklariere eine Variable besser vorher (bei Bedarf mit einer Defaultbesetzung) und weise später den gewünschten Wert zu.


    Tipp :

    Sobald Du es geschafft hast, Dir die Vollversion des für AutoIt optimierten SciTE-Editors zu installieren, setze folgende Anweisung im Header Deiner Skripte :

    #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 6 -w 7

    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."

  • ich würde für die Prüfung einfach den Aufrufpfad des Scriptes prüfen.

    ConsoleWrite(@ScriptFullPath & @CRLF)

    MfG Schnuffel


    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid