Anfängerfrage? zu '$oFSO.DeleteFolder("")'

  • Guten Morgen allerseits,

    ich versuche mich seit ein paar Tagen zum ersten mal an AutoIt und muß sagen das ich vorher noch keine so einfache und dabei auch mächtige Scriptsprache gesehen habe. Leider bin ich nicht der Programmierprofi sondern eher ein "Gelegenheitsprogrammierer" der sich das Leben mit ein paar kleinen Scripten erleichtern möchte. Jetzt stehe ich vor folgendem Problem:

    Ich möchte auf einem Server 1 oder mehrere Unterverzeichnisse mit Wildcards löschen. Weil das wohl mit

    Code
    DirRemove("C:\Test*", 1)


    offensichtlich nicht geht, bin ich hier im Forum auf

    Code
    $oFSO.DeleteFolder("c:\Test*")


    gestoßen. Dies funktioniert auch lokal und bei einem der Server ohne Probleme. Bei 3 anderen Servern (per Windows Explorer auch ohne Probleme erreichbar) bekomme ich aber folgende Fehlermeldung:

    C:\Dokumente und Einstellungen\henri\Eigene Dateien\autoit-scripts\test.au3 (12) : ==> The requested action with this object has failed.:
    $oFSO.DeleteFolder("\\Server1\daten\Test*")
    $oFSO.DeleteFolder("\\Server1\daten\Test*")^ ERROR
    ->09:21:20 AutoIT3.exe ended.rc:1

    Darauf kann ich mir irgendwie keinen Reim machen, denn wie gesagt funktioniert der gleiche Aufruf bei einem anderen Server ohne Probleme.

    Vielleicht hat ja jemand eine Idee?

    Gruß Mischa

    • Offizieller Beitrag

    Es geht auch mit AutoIt, wenn auch nicht mit einem direkten Wildcardbefehl für Ordner:

    [autoit]

    #include<file.au3>
    ;~ DirCreate(@ScriptDir & '\test_1')
    ;~ DirCreate(@ScriptDir & '\test_2')
    ;~ DirCreate(@ScriptDir & '\test_3')

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

    $BaseFolder = @ScriptDir & '\'
    $DelFolder = 'test_'
    $arFolder = _FileListToArray($BaseFolder, '*', 2)
    If @error Then Exit MsgBox(0, '', 'Keine Ordner in diesem Verzeichnis!')

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

    For $i = 1 To UBound($arFolder) -1
    If StringLeft($arFolder[$i], StringLen($DelFolder)) = $DelFolder Then DirRemove($BaseFolder & $arFolder[$i])
    Next

    [/autoit]

    Zu deinem Problem wgen FSO:

    Zitat

    FileSystemObject kann nur Ordner auf dem lokalen Computer erstellen.
    Um Ordner auf einem Remotecomputer zu erstellen kann das Objekt WshController verwendet werden
    (oder lokal erstellen und mit WMI verschieben)


    Das gilt analog für alle Operationen, da nicht per Remotezugriff das FileSystemObject referenziert werden kann.

  • Danke,

    funktioniert prima. Ich hab mich halt nur gewundert, dass es bei einem Server geht und bin deshalb nicht auf die Idee gekommen das es Grundsätzlich remote eigentlich nicht geht.

    Ein schönes Wochenende
    Mischa