#cs Objekt: FileSystemObject 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 #ce ; #### Object Drive #### #cs verfügbare Eigenschaften AvailableSpace Der freie Speicherplatz auf dem Laufwerk in Byte. Um den freien Speicherplatz in KB zu erhalten, teilen Sie diesen Wert durch 1.024 (es handelt sich um den Speicherplatz, der dem aktuellen Benutzer zur Verfügung steht - wenn Kontingente verwendet werden, kann der Wert kleiner sein als der gesamte zur Verfügung stehende freie Speicherplatz). DriveLetter Der dem Laufwerk zugewiesene Laufwerksbuchstabe ohne den angehängten Doppelpunkt. Für das Diskettenlaufwerk wird also zum Beispiel der Buchstabe A verwendet. DriveType Ein Integer-Wert, der den Laufwerkstyp angibt: 1 - Wechsellaufwerk 2 - Festplatte 3 - Netzlaufwerk 4 - CD-ROM 5 - RAM-Laufwerk FreeSpace Im Gegensatz zu AvailableSpace gibt diese Eigenschaft den gesamten zur Verfügung stehenden freien Festplattenplatz in Byte zurück. FileSystem Der Typ des verwendeten Dateisystems (FAT, FAT 32, NTFS). IsReady Gibt an, ob auf das Laufwerk zugegriffen werden kann. Wenn sich zum Beispiel keine CD im CD-Laufwerk oder keine Diskette im Diskettenlaufwerk befindet, hat diese Eigenschaft den Wert False. Path Pfad zum Laufwerk. Bei lokalen Laufwerken finden Sie unter dieser Eigenschaft den Laufwerksbuchstaben (zum Beispiel A). Bei Netzlaufwerken gibt die Eigenschaft den UNC-Pfad des Laufwerkes zurück (zum Beispiel \\Server1\SharedFolder). RootFolder Der Pfad zum Stammordner des Laufwerks. SerialNumber Die Seriennummer des Laufwerks. Bei Diskettenlaufwerken oder Netzlaufwerken hat diese Eigenschaft normalerweise den Wert 0. ShareName Freigabename eines Netzwerklaufwerks. TotalSize Gibt die Gesamtgröße des Laufwerks in Byte zurück (um die Gesamtgröße in KB zu erhalten, teilen Sie den Wert durch 1.024. Für die Gesamtgröße in MB teilen Sie den Wert durch 1.048.576 (1.024 x 1.024). VolumeName Der Volumenname des Laufwerks. #ce ; Auflistung aller Laufwerke Dim $oFSO = ObjCreate('Scripting.FileSystemObject') Dim $colDrives = $oFSO.Drives $str = '' For $objDrive in $colDrives $str &= $objDrive.DriveLetter & @LF Next MsgBox(0, 'Laufwerksbuchstaben', $str) ; Referenz auf ein einzelnes Laufwerk Dim $oFSO = ObjCreate('Scripting.FileSystemObject') Dim $objDrive = $oFSO.GetDrive("C:") MsgBox(0, 'Verfügbarer Speicherplatz', $objDrive.AvailableSpace) ; alle Laufwerkseigenschaften 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 ; #### Object Folder #### #cs verfügbare Eigenschaften Attributes Ein Bitfeld mit den Attributen des Ordners. Weitere Informationen finden Sie im Abschnitt Verwalten von Ordnerattributen in diesem Kapitel. DateCreated Erstellungsdatum des Ordners. DateLastAccessed Letztes Zugriffsdatum. DateLastModified Letztes Bearbeitungsdatum. Drive Laufwerksbuchstabe mit Doppelpunkt (zum Beispiel C:) des Laufwerks, in dem der Ordner gespeichert ist. Files Eine Collection mit Objekten vom Typ File zum Zugriff auf die im Ordner gespeicherten Dateien. IsRootFolder Ein Boolean-Wert, der anzeigt, ob es sich um einen Stammordner (wie zum Beispiel C:\) handelt. Name Name des Ordners ohne Pfadangaben (zum Beispiel System32). ParentFolder Name des Ordners, in dem der Ordner gespeichert ist. Für den Ordner C:\Scripts wäre dies zum Beispiel C:\. Path Vollständiger Pfad des Ordners (zum Beispiel C:\Windows\System32). ShortName Ordnername in der MS-DOS-Syntax mit der 8.3-Namenskonvention. Der Ordner C:\Windows\Programme wird zum Beispiel als Progra~1 angezeigt ShortPath Pfadname des Ordners in der MS-DOS-Syntax. Der Ordner C:\Windows\Programme wird zum Beispiel als C:\Windows\Progra~1 angezeigt. Size Gesamtgröße in Byte aller Inhalte des Ordners. Dies schließt die in dem Ordner gespeicherten Dateien und alle Dateien in Unterordnern ein. SubFolders Eine Collection mit den Unterordnern des Ordners. Die Unterordner in den Unterordnern sind nicht in dieser Collection enthalten. Type Ein String mit einer Beschreibung des Ordnertyps - meist File Folder. #ce ; 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 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 ; Fehlervermeidung (Ordner nicht vorhanden/vorhanden), Objekt nur erstellen, wenn Ordner existiert oder ; Ordner erstellen und dann referenzieren 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 ; 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 Dim $oFSO = ObjCreate('Scripting.FileSystemObject') $oFSO.DeleteFolder($Path) ; 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: ; MyData ; Data_1 ; Data_2 ; Unterordner_pic ; Unterordner_audio ; ; gelöscht werden sollen alle Unterordner, die mit 'U' beginnen Dim $oFSO = ObjCreate('Scripting.FileSystemObject') $oFSO.DeleteFolder("C:\MyData\U*") ; 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. Dim $oFSO = ObjCreate('Scripting.FileSystemObject') $oFSO.CopyFolder($Path_Quelle, $Path_Ziel [, $OverWriteFiles=True]) ; Ordner mit Hilfe von Wildcards kopieren ; Bsp.: alle Ordner (+ Unterordner mit Dateien), die mit 'Log' beginnen in den Ordner Archiv kopieren Dim $oFSO = ObjCreate('Scripting.FileSystemObject') $oFSO.CopyFolder("C:\Scripts\Log*" , "C:\Archive", True) ; 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. Dim $oFSO = ObjCreate('Scripting.FileSystemObject') $oFSO.MoveFolder($Path_Quelle, $Path_Ziel) $oFSO.MoveFolder("C:\Scripts", "\\helpdesk\management") ; Ordner umbenennen ; Hierfür gibt es keine eigene Methode. Es wird MoveFolder genutzt ; Bsp.: Ordner C:\FSO\Samples in C:\FSO\Scripts umbenennen Dim $oFSO = ObjCreate('Scripting.FileSystemObject') $oFSO.MoveFolder("C:\FSO\Samples", "C:\FSO\Scripts") ; Ordner Eigenschaften abfragen ; Beachten: Die Eigenschaften 'Files' und 'Subfolders' geben eine Collection zurück. ; 'Subfolders' arbeitet nicht rekursiv 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) ; Ordnerattribute #cs 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. #ce ; 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). 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 ; Ändern von Ordnerattributen 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 ; Rekursive Auflistung von Unterordnern Dim $oFSO = ObjCreate('Scripting.FileSystemObject') Dim $Path = 'ORDNERPFAD' Dim $str = '' _ShowSubFolders($oFSO.GetFolder($Path)) Func _ShowSubFolders($Folder) For $Subfolder in $Folder.SubFolders $str &= $Subfolder.Path & @LF _ShowSubFolders($Subfolder) Next EndFunc MsgBox(0, 'Rekursive Auflistung Unterordner', $str) ; #### Object File #### #cs verfügbare Eigenschaften Attributes Ein Bitfeld mit den Attributen der Datei. DateCreated Das Erstellungsdatum der Datei. DateLastAccessed Das Datum des letzten Dateizugriffs. DateLastModified Das Datum der letzten Änderung an der Datei. Drive Laufwerksbuchstabe mit Doppelpunkt des Laufwerks, auf dem die Datei gespeichert ist. Name Dateiname ohne Pfadinformationen. Für die Datei C:\Windows\System32\Scrrun.dll wäre das zum Beispiel Scrrun.dll. ParentFolder Name des Ordners, in dem die Datei gespeichert ist. Für C:\Windows\System32\Scrrun.dll wäre das zum Beispiel System32. Path Der vollständige Pfad der Datei (zum Beispiel C:\Windows\System32\Scrrun.dll). ShortName Der MS-DOS-Name der Datei (in 8.3-Schreibweise). Für die Datei C:\MySpreadsheet.xls ist das zum Beispiel MySpre~1.xls. ShortPath Der Pfad in MS-DOS-Schreibweise (in 8.3-Schreibweise). Für die Datei C:\Windows\Program Files\MyScript.vbs wäre das zum Beispiel C:\Windows\Progra~1\MyScript.vbs. Size Gesamtgröße der Datei in Byte. Type Ein String mit der Dateiart (zum Beispiel Microsoft Word Document). #ce ; Methode: GetFile ; Parameter: Dateiname (entweder ein lokaler Pfad oder ein UNC-Pfad) ; Referenz auf eine Datei erstellen 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 ; Zugriffsfehler vermeiden, vor Zugriff auf Existenz abfragen If $oFSO.FileExists($Path) Then $oFile = $oFSO.GetFile($Path) Else MsgBox(0, 'FEHLER', "Datei ist nicht vorhanden.") EndIf ; Das Prüfen mit Wildcards (z.B. *.txt) auf eine Gruppe von Dateien ist nicht möglich. ; Löschen einer Datei Dim $oFSO = ObjCreate('Scripting.FileSystemObject') Dim $Path = 'DATEIPFAD' $oFSO.DeleteFile($Path [, $Force=False]) ; 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 Dim $oFSO = ObjCreate('Scripting.FileSystemObject') Dim $Path = 'DATEIPFAD\*log.*' ; alle Dateien im Pfad mit 'log' irgendwo im Dateinamen $oFSO.DeleteFile($Path) ; Kopieren von Dateien Dim $oFSO = ObjCreate('Scripting.FileSystemObject') $oFSO.CopyFile($Path_Quelle, $Path_Ziel [, $OverWriteExisting=False]) ; 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 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. ; Verschieben einer Datei Dim $oFSO = ObjCreate('Scripting.FileSystemObject') $oFSO.MoveFile('D:\Data\Test.doc', $Path_Ziel) ; $Path_Ziel muß MIT abschließendem Backslash deklariert werden! ; Mehrere Dateien verschieben $oFSO.MoveFile('D:\Data\*.doc', $Path_Ziel) ; Alle 'doc'-Dateien des Ordners 'D:\Data' werden in den Zielordner verschoben. ; Eine Datei umbenennen ; Hierfür gibt es keine eigene Methode. Es wird MoveFile genutzt ; Bsp.: Umbenennen 'Test.doc' in 'Test.bak' $oFSO.MoveFile('D:\Data\Test.doc', 'D:\Data\Test.bak') ; Alle Dateieigenschaften auflisten 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) ; Dateiattribute #cs 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. #ce ; Anzeigen von Dateiattributen 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 ; Dateiattribute ändern ; Folgende Attribute können geändert werden: ; ReadOnly, Hidden, System, Archive 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 ; Alle Attribute gleichzeitig ausschalten $oFile.Attributes = BitAND($oFile.Attributes, 0) ; Pfadinformationen #cs 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). #ce 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) ; Abfragen der Dateiversion Dim $oFSO = ObjCreate('Scripting.FileSystemObject') Dim $Path = 'DATEIPFAD' MsgBox(0, 'Dateiversion', $oFSO.GetFileVersion($Path)) ; Textdateien erstellen 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. ; 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 Dim $oFSO = ObjCreate('Scripting.FileSystemObject') $str = '' For $i = 1 to 10 $strTempFile = $oFSO.GetTempName $str &= $strTempFile & @LF Next MsgBox(0, 'automatisch generierte Dateinamen', $str) ; Erstellen und Bennennen einer Textdatei Dim $oFSO = ObjCreate('Scripting.FileSystemObject') $strPath = 'DATEIPFAD' $strFileName = $oFSO.GetTempName $strFullName = $oFSO.BuildPath($strPath, $strFileName) $oFile = $oFSO.CreateTextFile($strFullName) $oFile.Close ; Öffnen von Textdateien ; Objekt vom Typ TextStream ; Methode: OpenTextFile #cs 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. #ce 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) ; Methoden zum Lesen #cs Read Liest die angegeben Anzahl an Zeichen. Der folgende Befehl liest zum Beispiel die ersten 12 Zeichen der ersten Zeile und speichert diese in der Variable $strText: $strText = $oTextFile.Read(12) ReadLine Liest eine Zeile auf der Textdatei. Der folgende Befehl liest zum Beispiel die erste Zeile und speichert sie in der Variable $strText: $strText = $oTextFile.ReadLine ReadAll Liest die gesamte Textdatei. Skip Überspringt die angegebene Anzahl an Zeichen. Der folgende Befehl überspringt zum Beispiel die ersten 12 Zeichen. Alle weiteren Leseoperationen beginnen also bei Zeichen 13: $oTextFile.Skip(12) SkipLine Überspringt eine Zeile. Der folgende Code liest zum Beispiel die erste und die dritte Zeile: $strText = $oTextFile.Readline $oTextFile.SkipLine $strText = $oTextFile.Readline #ce ; 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. 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 ; Zeilenweises Lesen einer Textdatei 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 ; Eine Textdatei Zeichen für Zeichen einlesen ; Methode: Read ; Bsp.: aus jeder Zeile nur das sechste Zeichen Auslesen 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 ; In Textdateien schreiben ; Methoden: Write, WriteLine oder WriteBlankLines #cs Write Schreibt Daten in eine Textdatei, OHNE einen Zeilenumbruch anzuhängen. Der folgende Code schreibt zum Beispiel zwei Strings in eine Textdatei: $oFile.Write ("Die ist Zeile 1.") $oFile.Write ("Die ist Zeile 2.") Die Textdatei sieht dann so aus: Die ist Zeile 1.Die ist Zeile 2. WriteLine Schreibt Daten in eine Textdatei und hängt einen Zeilenumbruch an. Der folgende Code schreibt zum Beispiel zwei Strings in eine Textdatei: $oFile.WriteLine ("Die ist Zeile 1.") $oFile.WriteLine ("Die ist Zeile 2.") Das Ergebnis sieht so aus: Die ist Zeile 1. Die ist Zeile 2. WriteBlankLines Schreibt eine leere Zeile in die Textdatei. Der folgende Code schreibt zwei Strings in die Textdatei und trennt diese durch einen Leerzeile: $oFile.Writeline ("Dies ist Zeile 1.") $oFile.WriteBlankLines(1) $oFile.Writeline ("Dies ist Zeile 2.") Das Ergebnis sieht so aus: Dies ist Zeile 1. Dies ist Zeile 2. #ce ; Ü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. Dim $oFSO = ObjCreate('Scripting.FileSystemObject') $Path = 'DATEIPFAD' $oFile = $oFSO.OpenTextFile($Path, 2) $oFile.Write('Text neu') $oFile.Close ; Neue Daten an bestehende Daten anhängen Dim $oFSO = ObjCreate('Scripting.FileSystemObject') $Path = 'DATEIPFAD' $oFile = $oFSO.OpenTextFile($Path, 8) $oFile.WriteLine('TextZeile angehängt') $oFile.Close