Objekt: Scripting.FileSystemObject

    • Offizieller Beitrag

    Hi,
    hier habe ich mal alle Möglichkeiten des 'Scripting.FileSystemObject' in AutoIt umgesetzt.
    Die meisten dieser Methoden stehen ja als Funktionen direkt in AutoIt zur Verfügung.
    Insofern wäre es vielleicht interessant, mal einen repräsentativen Vergleichstest durchzuführen.


    FileSystemObject

    Code
    enthält als eigene Objekte:
      Drive       Stellt den Zugriff auf ein Laufwerk oder eine Collection von Laufwerken zur Verfügung.
      File        Stellt den Zugriff auf eine Datei oder eine Collection von Dateien zur Verfügung.
      Folder      Stellt den Zugriff auf einen Ordner Laufwerk oder eine Collection von Ordnern zur Verfügung.
      TextStream  Stellt eine Quelle zur Verfügung, aus der Text gelesen werden kann, in die Text geschrieben 
                  werden kann, oder an die Text angehängt werden kann.
    Quelle: MS
    http://www.microsoft.com/germany/technet/datenbank/articles/600360.mspx#EVD


    Object Drive

    Spoiler anzeigen

    verfügbare Eigenschaften


    Auflistung aller Laufwerke

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $colDrives = $oFSO.Drives
    $str = ''
    For $objDrive in $colDrives
    $str &= $objDrive.DriveLetter & @LF
    Next
    MsgBox(0, 'Laufwerksbuchstaben', $str)

    [/autoit]


    Referenz auf ein einzelnes Laufwerk

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $objDrive = $oFSO.GetDrive("C:")
    MsgBox(0, 'Verfügbarer Speicherplatz', $objDrive.AvailableSpace)

    [/autoit]


    alle Laufwerkseigenschaften

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $colDrives = $oFSO.Drives
    For $oDrive in $colDrives
    $str = ''
    If $oDrive.IsReady Then ; viele Eigenschaften sind nur verfügbar, wenn Lw bereit ==> Medium vorhanden
    $str &= _
    "Verfügbarer Speicherplatz: " & $oDrive.AvailableSpace & @LF & _
    "Laufwerksbuchstabe: " & $oDrive.DriveLetter & @LF & _
    "Laufwerkstyp: " & $oDrive.DriveType & @LF & _
    "Dateisystem: " & $oDrive.FileSystem & @LF & _
    "Bereit: " & $oDrive.IsReady & @LF & _
    "Pfad: " & $oDrive.Path & @LF & _
    "Stammordner: " & $oDrive.RootFolder & @LF & _
    "Seriennummer: " & $oDrive.SerialNumber & @LF & _
    "Freigabename: " & $oDrive.ShareName & @LF & _
    "Gesamtgröße: " & $oDrive.TotalSize & @LF & _
    "Volumenname: " & $oDrive.VolumeName
    MsgBox(0, 'Laufwerkseigenschaften', $str)
    Else
    $str &= _
    "Laufwerksbuchstabe: " & $oDrive.DriveLetter & @LF & _
    "Laufwerkstyp: " & $oDrive.DriveType & @LF & _
    "Bereit: " & $oDrive.IsReady & @LF & _
    "Freigabename: " & $oDrive.ShareName
    MsgBox(0, 'Laufwerkseigenschaften', $str)
    EndIf
    Next

    [/autoit]

    Object Folder

    Spoiler anzeigen

    verfügbare Eigenschaften


    Referenz auf einen Ordner
    - erforderlich Pfadangabe als lokaler Pfad (z.B. D:\Daten) oder als UNC-Pfad (z.B. \\accounting\receivables)
    - Wildcards sind nicht zulässig

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $oFolder = $oFSO.GetFolder($Path)
    ; Bsp.:
    $oFolder = $oFSO.GetFolder("C:\Daten") ; erzeugt eine Referenz auf "C:\Daten"
    $oFolder = $oFSO.GetFolder(".") ; erzeugt eine Referenz auf den AKTUELLEN Ordner
    $oFolder = $oFSO.GetFolder("..") ; erzeugt eine Referenz auf den ÜBERGEORDNETEN Ordner

    [/autoit]


    Fehlervermeidung (Ordner nicht vorhanden/vorhanden), Objekt nur erstellen, wenn Ordner existiert oder
    Ordner erstellen und dann referenzieren

    [autoit]

    If $oFSO.FolderExists($Path) Then
    $oFolder = $oFSO.GetFolder($Path)
    Else
    MsgBox(0, 'ACHTUNG!', 'Ordner: "' & $Path & '", existiert nicht. Referenz wurde nicht erstellt.') ; Oder:
    ;~ $oFSO.CreateFolder($Path) ; Ordner erstellen
    ;~ $oFolder = $oFSO.GetFolder($Path) ; referenzieren
    EndIf

    [/autoit]


    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)

    Ordner löschen

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $oFSO.DeleteFolder($Path)

    [/autoit]


    Die Methode DeleteFolder löscht den Ordner und alle Inhalte sofort.
    Es wird keine Bestätigung angefordert, und die Elemente werden auch nicht im Papierkorb abgelegt!

    Ordner über Wildcards löschen
    z.B. besteht folgende Struktur:

    Code
    MyData
    	Data_1
    	Data_2
    	Unterordner_pic
    	Unterordner_audio


    gelöscht werden sollen alle Unterordner, die mit 'U' beginnen

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $oFSO.DeleteFolder("C:\MyData\U*")

    [/autoit]


    Wichtig! Wildcards können nur im letzten Teil des Pfades verwendet werden.

    Ordner und Inhalte kopieren
    Methode: CopyFolder
    Werden keine Wildcards verwendet, funktioniert die Methode wie der Befehl Xcopy /E: sie kopiert alle Dateien und alle Unterordner, inklusive aller leeren Unterordner.
    Die Methode benötigt zwei Parameter: Quellordner und Zielordner
    Optionaler dritter Parameter: Überschreiben (Standardwert 'TRUE')
    Wird Überschreiben auf 'FALSE' gesetzt und im Zielordner ist bereits ein gleichnamiger Ordner vorhanden, bricht der Vorgang mit einem Laufzeitfehler ab.

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $oFSO.CopyFolder($Path_Quelle, $Path_Ziel [, $OverWriteFiles=True])

    [/autoit]

    Ordner mit Hilfe von Wildcards kopieren
    Bsp.: alle Ordner (+ Unterordner mit Dateien), die mit 'Log' beginnen in den Ordner Archiv kopieren

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $oFSO.CopyFolder("C:\Scripts\Log*" , "C:\Archive", True)

    [/autoit]

    Verschieben von Ordnern und Inhalten
    Methode: MoveFolder
    Die Methode benötigt zwei Parameter: Quellordner und Zielordner ; Angabe als Lokaler oder UNC-Pfad
    Überschreiben bestehender Ordner ist nicht möglich
    Bsp.: verschiebt den lokalen Ordner C:\Scripts in die Freigabe \\helpdesk\management.

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $oFSO.MoveFolder($Path_Quelle, $Path_Ziel)
    $oFSO.MoveFolder("C:\Scripts", "\\helpdesk\management")

    [/autoit]

    Ordner umbenennen
    Hierfür gibt es keine eigene Methode. Es wird MoveFolder genutzt
    Bsp.: Ordner C:\FSO\Samples in C:\FSO\Scripts umbenennen

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $oFSO.MoveFolder("C:\FSO\Samples", "C:\FSO\Scripts")

    [/autoit]

    Ordner Eigenschaften abfragen
    Beachten: Die Eigenschaften 'Files' und 'Subfolders' geben eine Collection zurück.
    'Subfolders' arbeitet nicht rekursiv

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'ORDNERPFAD'
    $oFolder = $oFSO.GetFolder($Path)
    $str = _
    "DateCreated: " & $oFolder.DateCreated & @LF & _
    "DateLastAccessed: " & $oFolder.DateLastAccessed & @LF & _
    "DateLastModified: " & $oFolder.DateLastModified & @LF & _
    "Drive: " & $oFolder.Drive & @LF & _
    "IsRootFolder: " & $oFolder.IsRootFolder & @LF & _
    "Name: " & $oFolder.Name & @LF & _
    "ParentFolder: " & $oFolder.ParentFolder & @LF & _
    "Path: " & $oFolder.Path & @LF & _
    "ShortName: " & $oFolder.ShortName & @LF & _
    "ShortPath: " & $oFolder.ShortPath & @LF & _
    "Size: " & $oFolder.Size & @LF & _
    "Type: " & $oFolder.Type
    MsgBox(0, 'Eigenschaften Ordner', $str)
    $str = ''
    For $File In $oFolder.Files
    $str &= $File.Name & @LF
    Next
    MsgBox(0, 'Dateien im Ordner', $str)
    $str = ''
    For $SubFolder In $oFolder.Subfolders
    $str &= $SubFolder.Name & @LF
    Next
    MsgBox(0, 'Unterordner im Ordner', $str)

    [/autoit]

    Ordnerattribute

    Code
    Hidden         2  Versteckt - Zeigt an, dass der Ordner versteckt ist.
    System         4  System - Zeigt an, dass es sich um einen Systemordner handelt.
    Directory     16  Ordner - Der Standardwert für alle Ordner.
    Archive       32  Archiv - Das Archiv-Attribut wird zum Beispiel von Sicherungsprogrammen 
                      verwendet. Diese stellt über das Attribut fest, welche Dateien und Ordner 
                      gesichert werden müssen.
    Compressed  2048  Komprimiert - Zeigt an, ob der Ordner komprimiert ist.

    Anzeigen von Ordnerattributen
    Ordnerattribute (und auch Dateiattribute) sind Bitfelder.
    Das Abfragen erfolgt mit BitAnd(), d.h. wenn der übergebene Wert im Ausdruck enthalten ist, ist die Abfrage wahr.
    Das Setzen erfolgt mit BitXOR(), d.h. hier wird 'geswitcht'.
    Ist der übergebene Wert enthalten, wird er aus dem Ausdruck entfernt (binär subtrahiert).
    Ist der übergebene Wert nicht enthalten, wird er in den Ausdruck eingefügt (binär addiert).

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'ORDNERPFAD'
    $oFolder = $oFSO.GetFolder($Path)
    If BitAND($oFolder.Attributes, 2) Then
    MsgBox(0, 'Attribut', "Versteckt")
    EndIf
    If BitAND($oFolder.Attributes, 4) Then
    MsgBox(0, 'Attribut', "System")
    EndIf
    If BitAND($oFolder.Attributes, 16) Then
    MsgBox(0, 'Attribut', "Ordner")
    EndIf
    If BitAND($oFolder.Attributes, 32) Then
    MsgBox(0, 'Attribut', "Archiv")
    EndIf
    If BitAND($oFolder.Attributes, 2048) Then
    MsgBox(0, 'Attribut', "Komprimiert")
    EndIf

    [/autoit]


    Ändern von Ordnerattributen

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'ORDNERPFAD'
    $oFolder = $oFSO.GetFolder($Path)
    If Not BitAND($oFolder.Attributes, 2) Then ; wenn nicht 'versteckt'
    $oFolder.Attributes = BitXOR($oFolder.Attributes, 2) ; 'Versteckt' setzen
    EndIf

    [/autoit]


    Rekursive Auflistung von Unterordnern

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'ORDNERPFAD'
    Dim $str = ''
    _ShowSubFolders($oFSO.GetFolder($Path))

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

    Func _ShowSubFolders($Folder)
    For $Subfolder in $Folder.SubFolders
    $str &= $Subfolder.Path & @LF
    _ShowSubFolders($Subfolder)
    Next
    EndFunc
    MsgBox(0, 'Rekursive Auflistung Unterordner', $str)

    [/autoit]

    Object File

    Spoiler anzeigen

    verfügbare Eigenschaften

    Methode: GetFile
    Parameter: Dateiname (entweder ein lokaler Pfad oder ein UNC-Pfad)
    Referenz auf eine Datei erstellen

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'DATEIPFAD'
    $oFile = $oFSO.GetFile($Path)
    ; z.B.
    $oFile = $oFSO.GetFile('D:\Data\Test.txt') ; kpl. Pfadname
    $oFile = $oFSO.GetFile('Test.txt') ; Datei ist im Skript-Ordner
    $oFile = $oFSO.GetFile('.\Test.txt') ; Datei ist im übergeordneter Ordner

    [/autoit]


    Zugriffsfehler vermeiden, vor Zugriff auf Existenz abfragen

    [autoit]

    If $oFSO.FileExists($Path) Then
    $oFile = $oFSO.GetFile($Path)
    Else
    MsgBox(0, 'FEHLER', "Datei ist nicht vorhanden.")
    EndIf

    [/autoit]


    Das Prüfen mit Wildcards (z.B. *.txt) auf eine Gruppe von Dateien ist nicht möglich.

    Löschen einer Datei

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'DATEIPFAD'
    $oFSO.DeleteFile($Path [, $Force=False])

    [/autoit]


    Löscht standardmäßig keine schreibgeschützten Dateien, Abbruch mit Laufzeitfehler
    Um schreibgeschützte Dateien zu löschen den Parameter $Force auf 'TRUE' setzen.

    Löschen von Dateien mit Wildcard

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'DATEIPFAD\*log.*' ; alle Dateien im Pfad mit 'log' irgendwo im Dateinamen
    $oFSO.DeleteFile($Path)

    [/autoit]

    Kopieren von Dateien

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $oFSO.CopyFile($Path_Quelle, $Path_Ziel [, $OverWriteExisting=False])

    [/autoit]


    Standardmäßig werden beim Kopieren keine existierenden Dateien überschrieben.
    Dies kann erzwungen werden, indem der Parameter $OverWriteExisting auf 'TRUE' gesetzt wird.

    Kopieren von mehreren Dateien mit Wildcard

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $oFSO.CopyFile('D:\Data\*.doc', $Path_Ziel [, $OverWriteExisting=False])
    ; Alle 'doc'-Dateien des Ordners 'D:\Data' werden in den Zielordner kopiert.
    $oFSO.CopyFile('D:\Data\*.*', $Path_Ziel [, $OverWriteExisting=False])
    ; Alle 'Dateien des Ordners 'D:\Data' werden in den Zielordner kopiert.

    [/autoit]

    Verschieben einer Datei

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $oFSO.MoveFile('D:\Data\Test.doc', $Path_Ziel) ; $Path_Ziel muß MIT abschließendem Backslash deklariert werden!

    [/autoit]

    Mehrere Dateien verschieben

    [autoit]

    $oFSO.MoveFile('D:\Data\*.doc', $Path_Ziel)
    ; Alle 'doc'-Dateien des Ordners 'D:\Data' werden in den Zielordner verschoben.

    [/autoit]

    Eine Datei umbenennen
    Hierfür gibt es keine eigene Methode. Es wird MoveFile genutzt
    Bsp.: Umbenennen 'Test.doc' in 'Test.bak'

    [autoit]

    $oFSO.MoveFile('D:\Data\Test.doc', 'D:\Data\Test.bak')

    [/autoit]

    Alle Dateieigenschaften auflisten

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'DATEIPFAD'
    $oFile = $oFSO.GetFile($Path)
    $str = _
    "DateCreated: " & $oFile.DateCreated & @LF & _
    "DateLastAccessed: " & $oFile.DateLastAccessed & @LF & _
    "DateLastModified: " & $oFile.DateLastModified & @LF & _
    "Drive: " & $oFile.Drive & @LF & _
    "Name: " & $oFile.Name & @LF & _
    "ParentFolder: " & $oFile.ParentFolder & @LF & _
    "Path: " & $oFile.Path & @LF & _
    "ShortName: " & $oFile.ShortName & @LF & _
    "ShortPath: " & $oFile.ShortPath & @LF & _
    "Size: " & $oFile.Size & @LF & _
    "Type: " & $oFile.Type
    MsgBox(0, 'Datei Eigenschaften', $str)

    [/autoit]


    Dateiattribute

    Code
    Normal         0  Datei ohne Attribute.
    Read-only      1  Datei kann nur gelesen werden.
    Hidden         2  Versteckte Datei.
    System         4  Datei ist Teil des Betriebssystems.
    Archive       32  Datei ist zur Sicherung markiert.
    Alias         64  Datei ist eine Verknüpfung, die auf eine andere Datei verweist.
    Compressed  2048  Datei ist komprimiert.


    Anzeigen von Dateiattributen

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'DATEIPFAD'
    $oFile = $oFSO.GetFile($Path)
    If BitAND($oFile.Attributes, 0) Then
    MsgBox(0, 'Attribut', "Keine Attribute vorhanden")
    EndIf
    If BitAND($oFile.Attributes, 1) Then
    MsgBox(0, 'Attribut', "Read-only")
    EndIf
    If BitAND($oFile.Attributes, 2) Then
    MsgBox(0, 'Attribut', "Versteckt")
    EndIf
    If BitAND($oFile.Attributes, 4) Then
    MsgBox(0, 'Attribut', "System")
    EndIf
    If BitAND($oFile.Attributes, 32) Then
    MsgBox(0, 'Attribut', "Archiv")
    EndIf
    If BitAND($oFile.Attributes, 64) Then
    MsgBox(0, 'Attribut', "Alias")
    EndIf
    If BitAND($oFile.Attributes, 2048) Then
    MsgBox(0, 'Attribut', "Komprimiert")
    EndIf

    [/autoit]


    Dateiattribute ändern
    Folgende Attribute können geändert werden:
    ReadOnly, Hidden, System, Archive

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'DATEIPFAD'
    $oFile = $oFSO.GetFile($Path)
    If Not BitAND($oFile.Attributes, 1) Then ; wenn nicht 'Read-only'
    $oFile.Attributes = BitXOR($oFile.Attributes, 1) ; 'Read-only' setzen
    EndIf

    [/autoit]


    Alle Attribute gleichzeitig ausschalten

    [autoit]

    $oFile.Attributes = BitAND($oFile.Attributes, 0)

    [/autoit]


    Pfadinformationen

    Code
    GetAbsolutePathName   Gibt den vollständigen Pfad einer Datei zurück (zum Beispiel C:\FSO\Scripts\Scriptlog.txt).
    GetParentFolderName   Gibt den Pfad des Ordners zurück, in dem die Datei gespeichert ist (zum Beispiel C:\FSO\Scripts).
    GetFileName           Gibt den Dateinamen ohne Pfadinformationen zurück (zum Beispiel ScriptLog.txt).
    GetBaseName           Gibt den Basisnamen der Datei zurück (der Dateiname ohne Erweiterung - zum Beispiel ScriptLog).
    GetExtensionName      Gibt die Erweiterung der Datei zurück (zum Beispiel txt).
    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'DATEIPFAD'
    $oFile = $oFSO.GetFile($Path)
    $str = _
    "Absoluter Pfad: " & $oFSO.GetAbsolutePathName($oFile) & @LF & _
    "Überg. Ordner: " & $oFSO.GetParentFolderName($oFile) & @LF & _
    "Dateiname: " & $oFSO.GetFileName($oFile) & @LF & _
    "Basisname: " & $oFSO.GetBaseName($oFile) & @LF & _
    "Erweiterung: " & $oFSO.GetExtensionName($oFile)
    MsgBox(0, 'Pfadinformationen', $str)

    [/autoit]


    Abfragen der Dateiversion

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'DATEIPFAD'
    MsgBox(0, 'Dateiversion', $oFSO.GetFileVersion($Path))

    [/autoit]


    Textdateien erstellen

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'DATEIPFAD'
    $oFile = $oFSO.CreateTextFile($Path [,$Overwrite=True])
    ; Mit $Overwrite=True (Standard) wird eine evtl. bereits bestehende Datei überschrieben.

    [/autoit]


    Generieren von Dateinamen
    Es können automatisch Dateinamen generiert werden. Diese beginnen alle mit 'rad', gefolgt von 5 beliebigen Buchstaben/Ziffern
    und der Dateiendung 'tmp'. Maximal sind somit 9.894 eindeutige Dateinamen möglich

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $str = ''
    For $i = 1 to 10
    $strTempFile = $oFSO.GetTempName
    $str &= $strTempFile & @LF
    Next
    MsgBox(0, 'automatisch generierte Dateinamen', $str)

    [/autoit]

    Object TextStream

    Spoiler anzeigen

    Erstellen und Bennennen einer Textdatei

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $strPath = 'DATEIPFAD'
    $strFileName = $oFSO.GetTempName
    $strFullName = $oFSO.BuildPath($strPath, $strFileName)
    $oFile = $oFSO.CreateTextFile($strFullName)
    $oFile.Close

    [/autoit]


    Öffnen von Textdateien
    Objekt vom Typ TextStream
    Methode: OpenTextFile

    Code
    Modi:
    ForReading    (1) Die Datei wird im Lesemodus geöffnet. Schreiben in die Datei 
                      ist nicht möglich (hierzu müssten Sie die Datei schließen und 
                      dann im Modus ForWriting oder ForAppending neu öffnen).
    ForWriting    (2) In diesem Modus werden die vorhanden Dateien der Textdatei mit
                      den neuen Daten überschrieben.
    ForAppending  (8) In diesem Modus werden die neuen Dateien an die bestehenden 
                      Daten der Datei angehängt.
    [autoit]

    Const $ForReading = 1
    Const $ForWriting = 2
    Const $ForAppending = 8
    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $Path = 'DATEIPFAD'
    $oFile = $oFSO.OpenTextFile($Path, 'Modus')
    ; z.B. 'Test.txt' zum Lesen öffnen
    $oFile = $oFSO.OpenTextFile('D:\Data\Test.txt', 1)

    [/autoit]

    Methoden zum Lesen

    Achtung: Der Versuch eine leere Datei zu Lesen führt zu einem Laufzeitfehler.
    Dies läßt sich umgehen, indem nur Dateien >0 geöffnet werden.

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $Path = 'DATEIPFAD'
    $oFile = $oFSO.GetFile($Path)
    If $oFile.Size > 0 Then
    $oReadFile = $oFSO.OpenTextFile($Path, 1)
    $strContents = $oReadFile.ReadAll
    MsgBox(0, 'Datei Inhalt', $strContents)
    $oReadFile.Close
    Else
    MsgBox(0, 'Datei Inhalt', "Die Datei ist leer.")
    EndIf

    [/autoit]


    Zeilenweises Lesen einer Textdatei

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $Path = 'DATEIPFAD'
    $oFile = $oFSO.OpenTextFile($Path, 1)
    $n = 1
    Do
    $strLine = $oFile.ReadLine
    MsgBox(0, 'Text Zeile: ' & $n, $strLine)
    $n += 1
    Until $oFile.AtEndOfStream
    $oFile.Close

    [/autoit]


    Eine Textdatei Zeichen für Zeichen einlesen
    Methode: Read
    Bsp.: aus jeder Zeile nur das sechste Zeichen Auslesen

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $Path = 'DATEIPFAD'
    $oFile = $oFSO.OpenTextFile($Path, 1)
    $str = ''
    Do
    $oFile.Skip(5)
    $strCharacters = $oFile.Read(1)
    $str &= $strCharacters & @LF
    $oFile.SkipLine
    Until $oFile.AtEndOfStream
    $oFile.Close

    [/autoit]


    In Textdateien schreiben
    Methoden: Write, WriteLine oder WriteBlankLines

    Überschreiben von Dateien
    Wird eine Datei im Modus ForWriting geöffnet, dann werden die in der Datei vorhanden Daten mit den neu geschriebenen Daten überschrieben.

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $Path = 'DATEIPFAD'
    $oFile = $oFSO.OpenTextFile($Path, 2)
    $oFile.Write('Text neu')
    $oFile.Close

    [/autoit]

    Neue Daten an bestehende Daten anhängen

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    $Path = 'DATEIPFAD'
    $oFile = $oFSO.OpenTextFile($Path, 8)
    $oFile.WriteLine('TextZeile angehängt')
    $oFile.Close

    [/autoit]
    • Offizieller Beitrag

    Hallo

    Sieht gut aus, BugFix. Interessant wie AutoIt arbeitet, komm lass uns ein eigenes AutoIt machen mit AutoIt^^

    Interessant ist aber auch das die AutoIt Funktionen mehr auf der Festplatte machen als die Funktionen von FSObj.. Also mehr Schreibzugriffe macht AutoIt.
    Ich sehe es schon kommen: BugFix: King Of Array and Objects ;)

    Mfg Spider

  • Hab Scripting.FileSystemObject schon länger im Einsatz und kann bisher feststellen das diese Funktionen allgemein etwas langsamer arbeiten als die in AutoIt integrierten.
    Allerdings finde ich diese teilweise komfortabler und übersichtlicher weswegen ich immer öfter FileSystemObject-Funktionen vorziehe.

    Sehr schöne Zusammenstellung hier.
    Die eigentliche Dokumentation zum Scripting.FileSystemObject findet sich übrigens >>hier<<