• Offizieller Beitrag

    Hallo!

    Ich habe mich mal rangesetzt und eine verbesserte Version von FileChangeDir geschrieben.
    Diese Funktion erlaubt es, auch den Volumenamen eines Laufwerks anzugeben. Was besonders bei einer CD/DVD von Vorteil sein kann. So kann man testen, ob die CD mit diesem Namen in irgendeinem Laufwerk liegt.

    Schaut euch die Funktion mal an und schreibt, was ihr davon haltet.

    Edit: Ich habe die Funktion noch etwas erweitert. Man kann jetzt den Laufwerkstyp vorgeben (optional), um die Suche zu beschleunigen.

    Spoiler anzeigen
    [autoit]


    ;===============================================================================
    ;
    ; Funktion zum ändern des Arbeitsverzeichnisses
    ;
    ; Aufrufbeispiel: $msg = _FileChangeDir ( "Pfad" [, Laufwerkstyp] )
    ;
    ; Optional: Angabe des Laufwerkstyps ("ALL" (=Standard), "CDROM", "REMOVABLE", "FIXED",
    ; "NETWORK", "RAMDISK" oder "UNKNOWN") für die Suche nach dem Datenträgernamen
    ;
    ; Rückgabewert:
    ; Erfolg = Gibt 1 zurück, @error = 0
    ;
    ; Fehler = Gibt 0 zurück, wenn die Änderung nicht erfolgreich war, und setzt @error (siehe Bemerkungen).
    ;
    ; Bemerkungen:
    ; Wenn die Funktion scheitert (gibt 0 zurück), enthält @error zusätzliche Information:
    ; 1 = Fehler im Dateipfad
    ; 2 = kein Datenträger mit diesem Namen gefunden
    ; 3 = Laufwerkstyp falsch/fehlerhaft
    ; 4 = kein Datenträgername vorhanden
    ;
    ; Zusätzliche Hinweise:
    ; 'Pfad' darf hier auch mit dem Namen des Datenträgers beginnen.
    ; Beispiel: $msg = _FileChangeDir ( "System:\windows\system32\" )
    ; Wenn C: den Datenträgernamen "System" hat, dann wird eine "1" zurückgeliefert
    ;
    ; Funktioniert auch mit dem Datenträgernamen einer CD/DVD.
    ;
    ; Beim Datenträgernamen wird zwischen Groß-/Kleinschreibung unterschieden!
    ;
    ;===============================================================================
    Func _FileChangeDir($lFilePath, $lDrive = "ALL")
    Local $er = FileChangeDir($lFilePath)
    If $er = 0 Then; Pfad konnte nicht vom Standard FileChangeDir geändert werden
    Local $i, $lVolLetter
    Local $lPos = StringInStr($lFilePath, ":")
    If $lPos > 1 Then
    Local $lVolName = StringLeft($lFilePath, $lPos)
    Local $fPath = StringMid($lFilePath, $lPos+1)
    Local $var = DriveGetDrive($lDrive)
    If NOT @error Then
    For $i = 1 to $var[0]
    If (DriveGetLabel($var[$i]) & ":") == $lVolName Then
    $lVolLetter = $var[$i]
    Exitloop
    EndIf
    Next
    If $lVolLetter <> "" Then
    $er = FileChangeDir($lVolLetter & $fPath)
    If $er = 1 Then
    SetError(0)
    Return("1"); Arbeitsverzeichnis erfolgreich geändert
    Else
    SetError(1)
    Return("0"); Fehler im Dateipfad
    EndIf
    Else
    SetError(2)
    Return("0"); kein Datenträger mit diesem Namen gefunden
    EndIf
    Else
    SetError(3)
    Return("0"); Laufwerkstyp falsch/fehlerhaft
    EndIf
    Else
    SetError(4)
    Return("0"); kein Datenträgername vorhanden
    EndIf
    Else
    SetError(0)
    Return("1"); Arbeitsverzeichnis erfolgreich geändert (Standard FileChangeDir)
    EndIf
    EndFunc

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

    MfG. Oscar

    • Offizieller Beitrag

    Hi,
    ich war mal so frei, deine Syntaxstruktur anzupassen.
    Sonst kann man sich da schlecht reinlesen. ;)

    Spoiler anzeigen
    [autoit]

    Func _FileChangeDir($lFilePath)
    Local $er = FileChangeDir($lFilePath)
    If $er = 0 Then; Pfad konnte nicht vom Standard FileChangeDir geändert werden
    Local $i, $lVolLetter
    Local $lPos = StringInStr($lFilePath, ":")
    If $lPos > 1 Then
    Local $lVolName = StringLeft($lFilePath, $lPos)
    Local $fPath = StringMid($lFilePath, $lPos+1)
    Local $var = DriveGetDrive("all")
    If NOT @error Then
    For $i = 1 to $var[0]
    If (DriveGetLabel($var[$i]) & ":") == $lVolName Then
    $lVolLetter = $var[$i]
    Exitloop
    EndIf
    Next
    If $lVolLetter <> "" Then
    $er = FileChangeDir($lVolLetter & $fPath)
    If $er = 1 Then
    Return("1"); Arbeitsverzeichnis erfolgreich geändert
    Else
    Return("0"); Fehler im Dateipfad
    EndIf
    Else
    Return("0"); kein Volume mit diesem Namen gefunden
    EndIf
    EndIf
    Else
    Return("0"); ungültiger Volumename
    EndIf
    Else
    Return("1"); Arbeitsverzeichnis erfolgreich geändert (Standard FileChangeDir)
    EndIf
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Hallo,

    normalerweise wird die Formatierung aus dem Editor übernommen, einfach im Editor alles markieren und kopieren, danach hier einfügen und fertig!

    • Offizieller Beitrag

    Hallo Bernd!

    Zitat

    Original von bernd670
    normalerweise wird die Formatierung aus dem Editor übernommen, einfach im Editor alles markieren und kopieren, danach hier einfügen und fertig!

    Das hatte ich bisher auch immer so gemacht.
    Ich habe jetzt aber mal vom Erweiterten Editor auf den Standard-Editor umgeschaltet. Und: Nun geht es. :)

    Hat das evtl. etwas mit der Java-Version zu tun?

    MfG. Oscar