Laufwerk suchen dann kopieren

  • Hallo zusammen,

    ich brauche wieder einmal eure Hilfe. Es geht bei dem unten aufgeführten Quellcode um ein kleines Proggi mit dessen Hilfe ich TOMTOM Navis, spezieller die POI´s von einer Netzwerkresource aktualisieren möchte. Der Ablauf des Scrips ist momentan folgender:


    • USB-Stick (Simuliert mir ein Navi) wird an einen Client angeschlossen
    • Danach wird das Script vom User gestartet
    • Das Script durchsucht jetzt alle LW nach einem bestimmten Ordner
    • Findet das Script auf den LWen den angegebenen Ordner nicht --> gibts ne Fehlermeldung
    • Wird der Ordner gefunden Kopiert das Script den Source-Ordner (zu Testzwercken noch lokal) auf den Dest.-Ordner --> Mit Erfolgsmeldung


    Zu meinen Fragen bzw. Problemen: Alle die sich den Quellcode ansehen werden wahrscheinlich sagen "Oh Gott, komplizierter hätte man es nicht machen können !!" :cursing: Gibt es eine Möglichkeit das Ganze ein wenig einfacher zu gestelten ? Denn erschwerend kam jetzt noch hinzu das die Dest. Ordner verschieden sind, da unterschiedliche Versionen von den TOMTOM-Geräten unterwegs sind. Wie kann ich dem Script beibringen das es nach verschiedenen Ordnern sucht? Gibt es eine Möglichkeit das Script automatisch zu starten sobald ein Navi angeschlossen wird ? Ich hoffe ihr könnt & wollt mir helfen..

    [autoit]

    #include <GUIConstants.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    GuiCreate("BTC - TT Updater", 250, 250)

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

    GUICtrlCreateLabel ("!! Wichtig !!", 95, 20)
    GUICtrlCreateLabel ("Bevor Sie diese Software starten,", 45, 40)
    GUICtrlCreateLabel ("stellen Sie sicher das das TOMTOM Gerät", 25, 55)
    GUICtrlCreateLabel ("ordnungsgemäß mit diesem PC/Laptop", 30, 70)
    GUICtrlCreateLabel ("verbunden ist.", 90, 85)

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

    Opt("GUICoordMode",1)
    $Button_Sync=GUICtrlCreateButton("Syncronisieren", 25, 200, 100, 30)
    $Button_Been=GuiCtrlCreateButton("Beenden", 125, 200, 100, 30)
    Global $Quelle = "c:\Test"

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

    Local $file = FileExists ("d:\Test-Drive\")
    Local $file1 = FileExists ("e:\Test-Drive\")
    Local $file2 = FileExists ("f:\Test-Drive\")
    Local $file3 = FileExists ("h:\Test-Drive\")
    Local $file4 = FileExists ("g:\Test-Drive\")
    Local $file5 = FileExists ("h:\Test-Drive\")
    Local $file6 = FileExists ("i:\Test-Drive\")
    Local $file7 = FileExists ("j:\Test-Drive\")
    Local $file8 = FileExists ("k:\Test-Drive\")
    Local $file9 = FileExists ("l:\Test-Drive\")
    Local $file10= FileExists ("m:\Test-Drive\")
    Local $file11= FileExists ("n:\Test-Drive\")
    Local $file12= FileExists ("o:\Test-Drive\")
    Local $file13= FileExists ("p:\Test-Drive\")
    Local $file14= FileExists ("q:\Test-Drive\")
    Local $file15= FileExists ("r:\Test-Drive\")
    Local $file16= FileExists ("s:\Test-Drive\")
    Local $file17= FileExists ("t:\Test-Drive\")
    Local $file18= FileExists ("u:\Test-Drive\")
    Local $file19= FileExists ("v:\Test-Drive\")
    Local $file20= FileExists ("w:\Test-Drive\")
    Local $file21= FileExists ("x:\Test-Drive\")
    Local $file22= FileExists ("y:\Test-Drive\")
    Local $file23= FileExists ("z:\Test-Drive\")

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

    Local $Ziel = "d:\Test-Drive\"
    Local $Ziel1 = "e:\Test-Drive\"
    Local $Ziel2 = "f:\Test-Drive\"
    Local $Ziel3 = "h:\Test-Drive\"
    Local $Ziel4 = "g:\Test-Drive\"
    Local $Ziel5 = "h:\Test-Drive\"
    Local $Ziel6 = "i:\Test-Drive\"
    Local $Ziel7 = "j:\Test-Drive\"
    Local $Ziel8 = "k:\Test-Drive\"
    Local $Ziel9 = "l:\Test-Drive\"
    Local $Ziel10= "m:\Test-Drive\"
    Local $Ziel11= "n:\Test-Drive\"
    Local $Ziel12= "o:\Test-Drive\"
    Local $Ziel13= "p:\Test-Drive\"
    Local $Ziel14= "q:\Test-Drive\"
    Local $Ziel15= "r:\Test-Drive\"
    Local $Ziel16= "s:\Test-Drive\"
    Local $Ziel17= "t:\Test-Drive\"
    Local $Ziel18= "u:\Test-Drive\"
    Local $Ziel19= "v:\Test-Drive\"
    Local $Ziel20= "w:\Test-Drive\"
    Local $Ziel21= "x:\Test-Drive\"
    Local $Ziel22= "y:\Test-Drive\"
    Local $Ziel23= "z:\Test-Drive\"

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

    GUISetState ()
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $Button_Been
    Exit
    Case $msg = $Button_Sync

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

    If $file = 1 Then
    $copy = DirCopy ($Quelle, $Ziel, 1)
    If $copy = 1 Then
    MsgBox(64, "Erfolgreich!", "Dateien wurden Erfolgreich syncronisiert, klicken Sie auf 'OK' um dieses Fenster zu Schliessen.")
    EndIf
    If $copy = 0 Then
    MsgBox(64, "Hinweis", "Die Daten auf Ihrem TomTom Gerät sind syncron mit dem Server.")
    EndIf
    ElseIf $file1 = 1 Then
    $copy = DirCopy ($Quelle, $Ziel, 1)
    If $copy = 1 Then
    MsgBox(64, "Erfolgreich!", "Dateien wurden Erfolgreich syncronisiert, klicken Sie auf 'OK' um dieses Fenster zu Schliessen.")
    EndIf
    If $copy = 0 Then
    MsgBox(64, "Hinweis", "Die Daten auf Ihrem TomTom Gerät sind syncron mit dem Server.")
    EndIf
    ElseIf $file2 = 1 Then
    $copy = DirCopy ($Quelle, $Ziel, 1)
    If $copy = 1 Then
    MsgBox(64, "Erfolgreich!", "Dateien wurden Erfolgreich syncronisiert, klicken Sie auf 'OK' um dieses Fenster zu Schliessen.")
    EndIf
    If $copy = 0 Then
    MsgBox(64, "Hinweis", "Die Daten auf Ihrem TomTom Gerät sind syncron mit dem Server.")
    EndIf
    ElseIf $file3 = 1 Then
    $copy = DirCopy ($Quelle, $Ziel, 1)
    If $copy = 1 Then
    MsgBox(64, "Erfolgreich!", "Dateien wurden Erfolgreich syncronisiert, klicken Sie auf 'OK' um dieses Fenster zu Schliessen.")
    EndIf
    If $copy = 0 Then
    MsgBox(64, "Hinweis", "Die Daten auf Ihrem TomTom Gerät sind syncron mit dem Server.")
    EndIf
    ElseIf $file4 = 1 Then
    $copy = DirCopy ($Quelle, $Ziel, 1)
    If $copy = 1 Then
    MsgBox(64, "Erfolgreich!", "Dateien wurden Erfolgreich syncronisiert, klicken Sie auf 'OK' um dieses Fenster zu Schliessen.")
    EndIf
    If $copy = 0 Then
    MsgBox(64, "Hinweis", "Die Daten auf Ihrem TomTom Gerät sind syncron mit dem Server.")
    EndIf
    ElseIf $file4 = 1 Then
    $copy = DirCopy ($Quelle, $Ziel, 1)
    If $copy = 1 Then
    MsgBox(64, "Erfolgreich!", "Dateien wurden Erfolgreich syncronisiert, klicken Sie auf 'OK' um dieses Fenster zu Schliessen.")
    EndIf
    If $copy = 0 Then
    MsgBox(64, "Hinweis", "Die Daten auf Ihrem TomTom Gerät sind syncron mit dem Server.")
    EndIf
    ElseIf $file4 = 0 Then
    MsgBox(16, "Fehlgeschlagen", "Die Syncronisation ist Fehlgeschlagen, bitte überprüfen Sie ob Sie mit dem TomTom Gerät und dem Netzwerk verbunden sind!.")

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

    EndIf

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

    EndSelect
    Wend

    [/autoit]
  • Ich hätte es so gemacht, kA ob es dir gefällt. Du kannst dir noch Fehlerabfragen einbauen.

    Spoiler anzeigen
    [autoit]

    Global $Quellpfad = "c:\Dev-C++\"
    Global $Zielpfad[3] = [':\Test-Drive1\', ':\Test-Drive2\', ':\Test-Drive3\']
    Global $found = 0
    For $i = 67 To 90 ;von D bis Z
    For $j = 0 To 2 ;Zielpfad 1 bis 3
    If FileExists(Chr($i)&$Zielpfad[$j]) Then
    DirCopy($Quellpfad, Chr($i)&$Zielpfad[$j], 1)
    $found = 1
    ExitLoop
    EndIf
    If $found = 1 Then ExitLoop
    Next
    Next

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

    If $found = 1 Then
    MsgBox(64, "OK", "Dateien wurden erfolgreich übertragen")
    Else
    MsgBox(16, "Fehler", "Ordner wurde nicht gefunden!")
    EndIf

    [/autoit]
    • Offizieller Beitrag

    Nur mal kurz ein paar Anregungen.
    Die Pfade, die du verwenden/abfragen willst unterscheiden sich nur im Lw-Buchstaben.
    Also kannst du das Ganze in einer einzigen kurzen Schleife erledigen:

    [autoit]

    Global $path = ':\Test-Drive\'
    For $i = Asc('d') To Asc('z')
    If FileExists(Chr($i) & $path) Then
    ; copy ==> Pfad ist: Chr($i) & $path
    ExitLoop
    EndIf
    Next

    [/autoit]


    Wenn ein neues USB-Gerät angesteckt wird, startet die Hardwareerkennung. (mit rundll32.exe)
    Wie du das verwerten kannst, findest du in meinem Skript ManageUSB.

    Edit: Ich merke schon, wenn ich erst alle neuen Themen aufklappe und dann nach und nach durchgehe, hat bestimmt schon wer vor mir geantwortet. :D

  • Die Pfade, die du verwenden/abfragen willst unterscheiden sich nur im Lw-Buchstaben.

    @ Bug Fix: Leider unterscheiden sich die Pfade auch in der Bezeichnung, von daher ist die Lösung von funkey die die passt --> Vielen Dank Funkey !!