Script für Netzwerkshares optimieren

  • Hallo,

    Ich habe ein Script zum Mappen von Netzwerkshares auf meinem NAS geschrieben. Als Erklärung vorneweg. Ich benötige nicht immer alle 6 Shares auf einmal, sondern nur mal eine oder zwei gleichzeitig. Daher mein Ansatz mit der GUI und den Check-Boxen und die Shares bei Bedarf zu verbinden. Bei meinem ersten Ansatz war unter den Check-Boxen ein Button der die Shares verbunden hat. Dann ist mir eingefallen, dass ich ja alle Kombinationen (Share 1 mit 2 und 4 oder 2 und 6 oder 1 und 6 usw. usw.) abfragen muss. Da kommen bei 6 Shares einige Kombination und Zeilen Quelltext zustande. Zur Zeit ist für jede Share ein Button zum verbinden vorhanden.

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #include <GUIConstants.au3>
    $font="Tahoma"
    GuiCreate ("Netzlaufwerke herstellen", 340, 225)
    $lbl_besch = GUICtrlCreateLabel ("Bitte Netzlaufwerke auswählen", 64, 10, 212)
    GUICtrlSetFont ($lbl_besch, 10, 600 ,4, $font)

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

    $chk_DasiBilder = GUICtrlCreateCheckbox ("Datensicherung Bilder", 20, 47)
    GUICtrlSetTip ( $chk_DasiBilder, "\\Storage\DasiBilder" )
    $btn_bilder = GUICtrlCreateButton ("Verbindung herstellen (T:\)", 190, 45, 135, 21)

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

    $chk_Update = GUICtrlCreateCheckbox ("Update (Sicherheitspatche)", 20, 72)
    GUICtrlSetTip ($chk_Update, "\\Storage\Update" )
    $btn_update = GUICtrlCreateButton ("Verbindung herstellen (U:\)", 190, 70, 135, 21)

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

    $chk_DasiDaten = GUICtrlCreateCheckbox ("Datensicherung Daten", 20, 97)
    GUICtrlSetTip ($chk_DasiDaten, "\\Storage\DasiDaten" )
    $btn_daten = GUICtrlCreateButton ("Verbindung herstellen (W:\)", 190, 95, 135, 21)

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

    $chk_DasiDownload = GUICtrlCreateCheckbox ("Datensicherung Download", 20, 122)
    GUICtrlSetTip ($chk_DasiDownload, "\\Storage\DasiDownload" )
    $btn_download = GUICtrlCreateButton ("Verbindung herstellen (X:\)", 190, 120, 135, 21)

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

    $chk_DasiMusik = GUICtrlCreateCheckbox ("Datensicherung Musik", 20, 147 )
    GUICtrlSetTip ($chk_DasiMusik, "\\Storage\DasiMusik" )
    $btn_musik = GUICtrlCreateButton ("Verbindung herstellen (Y:\)", 190, 145, 135, 21)

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

    $chk_DatTausch = GUICtrlCreateCheckbox ("Laufwerk für Datenaustausch", 20, 172)
    GUICtrlSetTip ($chk_DatTausch, "\\Storage\Dat-Tausch" )
    $btn_dta = GUICtrlCreateButton ("Verbindung herstellen (Z:\)", 190, 170, 135, 21)
    GUISetState(@SW_SHOW)
    while 1
    $msg = GUIGetMsg()

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

    Select
    Case $msg = $btn_bilder

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

    ;Mapping fuer Bilder
    $bilder = GUICtrlRead ($chk_DasiBilder)
    $storage = Ping("storage",250)
    If $storage Then
    Select
    case $bilder = $GUI_CHECKED
    $LW_Bez = DriveMapGet ("t:")
    Select
    Case $LW_Bez = ""
    DriveMapAdd ("t:", "\\storage\dasibilder")
    If @error = 2 Then
    MsgBox(16,"Fehler", "Zugriff verweigert")
    ElseIF @error = 3 Then
    MsgBox(16,"Fehler", "Laufwerk bereits zugewiesen")
    ElseIF @error = 4 Then
    MsgBox(16,"Fehler", "Ungültiger Gerätename (Laufwerksbuchstabe)")
    ElseIF @error = 5 Then
    MsgBox(16,"Fehler", "Ungültige Remote Share")
    ElseIF @error = 6 Then
    MsgBox(16,"Fehler", "Ungültiges Passwort")
    EndIf
    Case $LW_Bez ="\\Storage\dasibilder"
    msgbox(64,"Fehler","Laufwerk für die Bilder war bereits verbunden")
    EndSelect
    case $bilder = $GUI_UNCHECKED
    MsgBox (16,"Fehler", "Bitte Laufwerk auswählen")
    EndSelect
    Else
    Msgbox(16,"Fehler","NAS steht nicht zur Verfügung, bitte prüfen!")
    GUICtrlSetState ($chk_DasiBilder, $GUI_UNCHECKED)
    Return 0
    EndIf
    GUICtrlSetState ($chk_DasiBilder, $GUI_UNCHECKED)

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

    Case $msg = $btn_update
    ;Mapping fuer Updates
    $update = GUICtrlRead ($chk_Update)
    $storage = Ping("storage",250)
    If $storage Then
    Select
    case $update = $GUI_CHECKED
    $LW_Bez = DriveMapGet ("u:")
    Select
    Case $LW_Bez = ""
    DriveMapAdd ("u:", "\\storage\update")
    If @error = 2 Then
    MsgBox(16,"Fehler", "Zugriff verweigert")
    ElseIF @error = 3 Then
    MsgBox(16,"Fehler", "Laufwerk bereits zugewiesen")
    ElseIF @error = 4 Then
    MsgBox(16,"Fehler", "Ungültiger Gerätename (Laufwerksbuchstabe)")
    ElseIF @error = 5 Then
    MsgBox(16,"Fehler", "Ungültige Remote Share")
    ElseIF @error = 6 Then
    MsgBox(16,"Fehler", "Ungültiges Passwort")
    EndIf
    Case $LW_Bez ="\\Storage\update"
    msgbox(64,"Fehler","Laufwerk für das Update war bereits verbunden")
    EndSelect
    case $update = $GUI_UNCHECKED
    MsgBox (16,"Fehler", "Bitte Laufwerk auswählen")
    EndSelect
    Else
    Msgbox(16,"Fehler","NAS steht nicht zur Verfügung, bitte prüfen!")
    GUICtrlSetState ($chk_Update, $GUI_UNCHECKED)
    Return 0
    EndIf
    GUICtrlSetState ($chk_Update, $GUI_UNCHECKED)

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

    Case $msg = $btn_Daten
    ;Mapping fuer Daten
    $daten = GUICtrlRead ($chk_DasiDaten)
    $storage = Ping("storage",250)
    If $storage Then
    Select
    case $daten = $GUI_CHECKED
    $LW_Bez = DriveMapGet ("w:")
    Select
    Case $LW_Bez = ""
    DriveMapAdd ("W:", "\\storage\dasidaten")
    If @error = 2 Then
    MsgBox(16,"Fehler", "Zugriff verweigert")
    ElseIF @error = 3 Then
    MsgBox(16,"Fehler", "Laufwerk bereits zugewiesen")
    ElseIF @error = 4 Then
    MsgBox(16,"Fehler", "Ungültiger Gerätename (Laufwerksbuchstabe)")
    ElseIF @error = 5 Then
    MsgBox(16,"Fehler", "Ungültige Remote Share")
    ElseIF @error = 6 Then
    MsgBox(16,"Fehler", "Ungültiges Passwort")
    EndIf
    Case $LW_Bez ="\\Storage\dasidaten"
    msgbox(64,"Fehler","Laufwerk für die Daten war bereits verbunden")
    EndSelect
    case $daten = $GUI_UNCHECKED
    MsgBox (16,"Fehler", "Bitte Laufwerk auswählen")
    EndSelect
    Else
    Msgbox(16,"Fehler","NAS steht nicht zur Verfügung, bitte prüfen!")
    GUICtrlSetState ($chk_DasiDaten, $GUI_UNCHECKED)
    Return 0
    EndIf
    GUICtrlSetState ($chk_DasiDaten, $GUI_UNCHECKED)

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

    Case $msg = $btn_Download
    ;Mapping fuer Download
    $download = GUICtrlRead ($chk_DasiDownload)
    $storage = Ping("storage",250)
    If $storage Then
    Select
    case $download = $GUI_CHECKED
    $LW_Bez = DriveMapGet ("x:")
    Select
    Case $LW_Bez = ""
    DriveMapAdd ("x:", "\\storage\dasidownload")
    If @error = 2 Then
    MsgBox(16,"Fehler", "Zugriff verweigert")
    ElseIF @error = 3 Then
    MsgBox(16,"Fehler", "Laufwerk bereits zugewiesen")
    ElseIF @error = 4 Then
    MsgBox(16,"Fehler", "Ungültiger Gerätename (Laufwerksbuchstabe)")
    ElseIF @error = 5 Then
    MsgBox(16,"Fehler", "Ungültige Remote Share")
    ElseIF @error = 6 Then
    MsgBox(16,"Fehler", "Ungültiges Passwort")
    EndIf
    Case $LW_Bez ="\\Storage\dasidownload"
    msgbox(64,"Fehler","Laufwerk für die Downloads war bereits verbunden")
    EndSelect
    case $download = $GUI_UNCHECKED
    MsgBox (16,"Fehler", "Bitte Laufwerk auswählen")
    EndSelect
    Else
    Msgbox(16,"Fehler","NAS steht nicht zur Verfügung, bitte prüfen!")
    GUICtrlSetState ($chk_DasiDownload, $GUI_UNCHECKED)
    Return 0
    EndIf
    GUICtrlSetState ($chk_DasiDownload, $GUI_UNCHECKED)

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

    Case $msg = $btn_Musik
    ;Mapping fuer Musik
    $musik = GUICtrlRead ($chk_DasiMusik)
    $storage = Ping("storage",250)
    If $storage Then
    Select
    case $musik = $GUI_CHECKED
    $LW_Bez = DriveMapGet ("y:")
    Select
    Case $LW_Bez = ""
    DriveMapAdd ("y:", "\\storage\dasimusik")
    If @error = 2 Then
    MsgBox(16,"Fehler", "Zugriff verweigert")
    ElseIF @error = 3 Then
    MsgBox(16,"Fehler", "Laufwerk bereits zugewiesen")
    ElseIF @error = 4 Then
    MsgBox(16,"Fehler", "Ungültiger Gerätename (Laufwerksbuchstabe)")
    ElseIF @error = 5 Then
    MsgBox(16,"Fehler", "Ungültige Remote Share")
    ElseIF @error = 6 Then
    MsgBox(16,"Fehler", "Ungültiges Passwort")
    EndIf
    Case $LW_Bez ="\\Storage\dasimusik"
    msgbox(64,"Fehler","Laufwerk für die Musik war bereits verbunden")
    EndSelect
    case $musik = $GUI_UNCHECKED
    MsgBox (16,"Fehler", "Bitte Laufwerk auswählen")
    EndSelect
    Else
    Msgbox(16,"Fehler","NAS steht nicht zur Verfügung, bitte prüfen!")
    GUICtrlSetState ($chk_DasiMusik, $GUI_UNCHECKED)
    Return 0
    EndIf
    GUICtrlSetState ($chk_DasiMusik, $GUI_UNCHECKED)

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

    Case $msg = $btn_dta
    ;Mapping fuer Datentausch
    $dattausch = GUICtrlRead ($chk_DatTausch)
    $storage = Ping("storage",250)
    If $storage Then
    select
    Case $dattausch = $GUI_CHECKED
    $LW_Bez = DriveMapGet ("z:")
    Select
    Case $LW_Bez = ""
    DriveMapAdd ("z:", "\\storage\dat-tausch")
    If @error = 2 Then
    MsgBox(16,"Fehler", "Zugriff verweigert")
    ElseIF @error = 3 Then
    MsgBox(16,"Fehler", "Laufwerk bereits zugewiesen")
    ElseIF @error = 4 Then
    MsgBox(16,"Fehler", "Ungültiger Gerätename (Laufwerksbuchstabe)")
    ElseIF @error = 5 Then
    MsgBox(16,"Fehler", "Ungültige Remote Share")
    ElseIF @error = 6 Then
    MsgBox(16,"Fehler", "Ungültiges Passwort")
    EndIf
    Case $LW_Bez ="\\Storage\dat-tausch"
    msgbox(64,"Fehler","Laufwerk für den Datentasuch war bereits verbunden")
    EndSelect
    Case $dattausch = $GUI_UNCHECKED
    MsgBox (16,"Fehler", "Bitte Laufwerk auswählen")
    EndSelect
    Else
    Msgbox(16,"Fehler","NAS steht nicht zur Verfügung, bitte prüfen!")
    GUICtrlSetState ($chk_DatTausch, $GUI_UNCHECKED)
    Return 0
    EndIf
    GUICtrlSetState ($chk_DatTausch, $GUI_UNCHECKED)

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

    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop

    EndSelect

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

    WEnd

    [/autoit]

    Das ganze gefällt mir noch nicht so Richtig. Daher meine Frage, wie kann man das noch optimieren?

    Dabei ist mir aufgefallen, dass

    [autoit]

    DriveMapAdd ("t:", "\\storage\dasibilder")
    MsgBox (0,"", @error)

    [/autoit]

    bei erfolgreicher Durchführung den Rückgabewert 0 hat und nicht wie in der deutschen und englischen Hilfe beschrienen die 1. ?(


    Gruß
    Stefan

    Einmal editiert, zuletzt von knuspertux (30. Dezember 2006 um 21:49)

    • Offizieller Beitrag

    Dein Script enthält einen marginalen Fehler.
    Du verwendest

    [autoit]

    Return 0

    [/autoit]

    ausserhalb einer Funktion. Return ist aber ausschliesslich zur Nutzung in Funktionen vorbehalten.

    Zitat

    Use the Return keyword to exit the function. Unlike built-in functions, user-defined functions return 0 unless another return value is specified.

  • Hallo BugFix,

    danke für den Hinweis.

    Zitat

    Original von BugFix
    Dein Script enthält einen marginalen Fehler.
    Du verwendest

    [autoit]

    Return 0

    [/autoit]

    ausserhalb einer Funktion. Return ist aber ausschliesslich zur Nutzung in Funktionen vorbehalten.
    ....