Windows Scripting Host

wsh-doku wsh allgemein wscript shell wscript network file system object wmi activex data object
   

File System Object

Dateien verwalten mit Hilfe von VB-Scripts.

  • Datei beim Kopieren gleichzeitig umbenennen
  • Datei einlesen bis zum Ende
  • Datei einlesen
  • Datei erstellen, bearbeiten
  • Datei löschen
  • Datei umbennenen
  • Datei verschieben
  • Datei- Eigenschaften ausgeben
  • Datei- Existenzprüfung
  • Dateien kopieren
  • Dateinamen für TMP- Dateien zufällig ermitteln
  • Laufwerk- Speicherplatz ausgeben
  • Laufwerkseigenschaften ausgeben
  • Laufwerksliste ausgeben
  • Laufwerksverfügbarkeit testen
  • Ordner anlegen
  • Ordner kopieren
  • Ordner löschen
  • Ordner umbennen
  • Ordner verschieben
  • Ordner vom Betriebssystem ausgeben
  • Ordner- Eigenschaften ausgeben
  • Ordner- Existenzprüfung
  • Scriptbeispiel - Automatisches Löschen
  • Scriptbeispiel - Automatisiertes Umbenennen von Datei-Endungen
  • Scriptbeispiel - Dateien und Ordner zählen mit allen Unterordnern
  • Scriptbeispiel - Dateien und Ordner zählen
  • Scriptbeispiel - Inhaltsverzeichnis aller Ordner und Unterordner mit Dateien
  • Scriptbeispiel - Inhaltsverzeichnis aller Ordnern und Unterordnern
  • Scriptbeispiel - Speicherplatzcheckprogramm
  • Scriptname und Pfad ausgeben



    Datei beim Kopieren gleichzeitig umbenennen

    Dieses Skript kopiert "a.txt" nach "c:\test\a\" und
    überschreibt gegebenenfalls die schon existierende Datei.
    Außedem benennt es die Datei in "b.txt" um.

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.GetFile("c:\test\a.txt")
    f1.copy ("c:\test\a\b.txt")

    Stand: 13.10.2005

    [zurück]

    Datei einlesen bis zum Ende

    Dieses Sript liest die Zeilen der Datei c:\readme.txt ein
    und gibt die Daten aus.

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile("c:\readme.txt")
    Do Until objTextFile.AtEndOfStream
    strLine = objTextFile.Readline
    msgbox(strLine)
    Loop
    msgbox("done.")


    Stand: 28.03.2006

    [zurück]

    Datei einlesen

    Einlesen von Daten aus einer Datei, z.B. "c:\test\test.txt"

    '1 Eine Zeile auslesen:
    set fs= CreateObject("scripting.filesystemobject")
    set dateiinhalt = fs.opentextfile("c:\test\test.txt")
    inhalt = inhalt & dateiinhalt.readline
    dateiinhalt.close
    msgbox inhalt
    '2 Buchstaben auslesen
    set dateiinhalt = fs.opentextfile("c:\test\test.txt")
    inhalt3 = inhalt3 & dateiinhalt.read(4)
    dateiinhalt.close
    msgbox inhalt3
    '3 alles auslesen:
    set dateiinhalt = fs.opentextfile("c:\test\test.txt")
    inhalt2 = inhalt2 & dateiinhalt.readall
    dateiinhalt.close
    msgbox inhalt2

    Als erstes wird (bei 1) die ganze Zeile eingelesen und ausgegeben,
    danach (bei 2) die ersten vier Buchstaben und
    als letztes wird (bei 3) der ganze Dateieninhalt ausgelesen.

    Stand: 13.10.2005

    [zurück]

    Datei erstellen, bearbeiten

    Dieses Skript erstellt eine Datei namens "test.txt" und
    schreibt das aktuelle Datum in die Datei.

    set fs = createobject("Scripting.filesystemobject")
    set logbuch =fs.opentextfile("C:\test\test.txt", 8, true,0)
    logbuch.writeline now & ": Dies ist ein Test."
    logbuch.close

    Die folgenden Parameter sind nur optional und können weggelassen werden.
    Es werden dann die Standard-Einstellungen genommen!

    1 = Datei wird NUR zum Lesen geöffnet (Standard)
    2 = Datei wird zum Schreiben geöffnet, Inhalt wird überschrieben
    8 = Datei wird zum Schreiben geöffnen, Inhalt wird beibehalten, neues wird angehängt

    true = Datei wird angelegt, wenn sie noch nicht existiert (Standard)
    false = Datei wird nicht angelegt, wenn sie nicht existiert.

    0 = ANSI, ein Zeichen pro Byte (Standard)
    -1 = UNICODE, zwei Bytes pro Zeichen
    -2 = Datei wird in dem jeweiligen Betriebssystemstandart geltentenden Code geöffnet
    (WIN NT/2000 -> Unicode / WIN 9x -> ANSI)

    Stand: 13.10.2005

    [zurück]

    Datei löschen

    Dieses Skript kann nur eine Datei löschen.

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.GetFile("c:\test\a.txt")
    f1.Delete

    Stand: 13.10.2005

    [zurück]

    Datei umbennenen

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.GetFile("c:\test\a.txt")
    f1.Move ("c:\test\b.txt")

    Stand: 13.10.2005

    [zurück]

    Datei verschieben

    Verschieben der Datei a.txt von "c:\test\a\a.txt" nach "c:\test\b\"
    Hinweis: Man kann mit diesem Skript nur eine Datei verschieben.

    quelle="c:\test\a\a.txt"
    ziel = "c:\test\b\"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.GetFile(quelle)
    f1.Move (ziel)

    *** Hinweis: Wenn Datei oder Verzeichnis nicht existiert stürzt das Skript ab.

    Stand: 13.10.2005

    [zurück]

    Datei- Eigenschaften ausgeben

    Dieses Sript gibt die Eigenschaften einer Datei aus:

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.GetFile("c:\temp\test.txt")
    li = ""
    li = li & "Existiert Datei?: " & fso.fileexists (f1) & vbcr
    li = li & "Name: " & f1.Name & vbcr
    li = li & "Pfad mit Dateiname: " & f1.Path & vbcr
    li = li & "Dospfadname: "& f1.shortpath & vbcr
    li = li & "Dosname: "& f1.shortname & vbcr
    li = li & "Datei-Endung: "& fso.GetExtensionName(f1) & vbcr
    li = li & "Pfad: " & fso.GetParentFolderName(f1) & vbcr
    li = li & "Laufwerk: " & fso.GetDriveName(f1) & vbcr
    li = li & "Typ: " & f1.Type & vbcr
    li = li & "Erstellt am: " & f1.DateCreated & vbcr
    li = li & "Letzter Zugriff: " & f1.DateLastAccessed & vbcr
    li = li & "Letzte Änderung: " & f1.DateLastModified & vbcr
    li = li & "Grösse: " & f1.Size & " Bytes" & vbcr
    li = li & "Attribut: " & f1.attributes & vbcr
    msgbox(li)

    Bei den Attributen haben die Zahlen folgende Bedeutung:
    1 = schreibgeschützt
    2 = versteckt
    4 = System
    8 = Laufwerk
    16 = Ordner
    32 = Archiv
    64 = Verknüpfung
    128 = komprimiert (WinNT)

    Stand: 30.07.2006

    [zurück]

    Datei- Existenzprüfung

    Diese script prüft, ob die Datei "c:\test\b.txt" existiert

    set fs = CreateObject("Scripting.FileSystemObject")
    if fs.fileExists("C:\test\b.txt") then
    msgbox("File existiert")
    else
    msgbox("File nicht gefunden")
    end if

    Stand: 13.10.2005

    [zurück]

    Dateien kopieren

    Voraussetzung:
    Die Ordner "c:\test\" und "c:\test\a" müssen existieren.
    Ebenso muss die Datei "a.txt" im Ordner "c:\test\" vorhanden sein.

    Möglichkeit 1:
    Dieses Skript kopiert "a.txt" nach "c:\test\a\" und
    überschreibt gegebenenfalls die schon existierende Datei.
    Mit diesem Verfahren läßt sich nur eine Datei kopieren.

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.GetFile("c:\test\a.txt")
    f1.copy ("c:\test\a\")

    Möglichkeit 2:
    Lässt überschreiben nicht zu, Skript wirft Fehlermeldung aus.
    Für dies sorgt, das "false" am Ende der 2. Zeile,
    steht es auf "true", wird hier auch überschrieben.
    Mit diesem Skript kann man mehrere Dateien gleichzeitig kopieren.

    Set fs = CreateObject("Scripting.FileSystemObject")
    fs.copyfile "c:\test\*.htm","c:\test\b", false

    Stand: 13.10.2005

    [zurück]

    Dateinamen für TMP- Dateien zufällig ermitteln

    Dieses Script listet zufällig 10 Namen für TMP-Dateien auf.

    set fs = createobject("Scripting.FileSystemObject")
    for x=1 to 10
    list= list & fs.getTempname & vbcr
    next
    msgbox list

    Stand: 13.10.2005

    [zurück]

    Laufwerk- Speicherplatz ausgeben

    Dieses Script gibt den gesamten und freien Speicherplatz auf Laufwerk "C:\" aus.

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set lw = fso.GetDrive("c:\")
    msgbox "Gesamtspeicher " & lw.totalsize & " Bytes"
    msgbox "Freier Speicher " & lw.FreeSpace & " Bytes"

    Stand: 13.10.2005

    [zurück]

    Laufwerkseigenschaften ausgeben

    Dieses Script gibt die Eigenschaften eines Laufwerks wieder.

    set fs = Createobject("Scripting.filesystemobject")
    set driv = fs.drives("c:")
    liste = "Laufwerk bereit?: " & driv.isready & vbcr
    liste = liste & "Laufwerkname: " & driv.volumename & vbcr
    liste = liste & "L'buchstabe: " & driv.driveletter & vbcr
    liste = liste & "Seriennummer: " & driv.serialnumber & vbcr
    liste = liste & "Gesamterplatz: " & driv.totalsize & " Bytes" & vbcr
    liste = liste & "verfügbarer Platz: " & driv.availablespace & " Bytes" & vbcr
    liste = liste & driv.path & vbcr
    liste = liste & driv.rootfolder & vbcr
    liste = liste & "Dateisystem: " & driv.filesystem & vbcr
    liste = liste & "Typ: " & driv.drivetype
    msgbox liste

    Die Nummer beim Typ hat folgende Bedeutung:
    0 = unbekannt
    1 = Wechselmedium, z.B. Zip- Drive
    2 = Festplatte
    3 = Netzwerk- Laufwerk
    4 = CD- ROM
    5 = RAM- Disk

    Hier noch ein Beispiel von Peter A. mit Case und Sharename,
    um den Namen des verbundenen Netzlaufwerkes auszugeben:

    Set fs = CreateObject("Scripting.FileSystemObject")
    For Each laufwerk In fs.drives
    Select Case laufwerk.drivetype
    Case 5: msgbox "RAM-Disk "
    Case 4: msgbox "CD-Rom-Laufwerk: " & laufwerk.driveletter
    Case 3: msgbox "Netzlaufwerk: " & laufwerk.sharename
    Case 2: msgbox "Festplatte: " & laufwerk.rootfolder
    Case 1: msgbox "Wechselplatte "
    Case 0: msgbox "Unbekannter Typ "
    End Select
    Next

    Vielen Dank an Peter A. für das Scriptbeispiel.

    Stand: 17.08.2006

    [zurück]

    Laufwerksliste ausgeben

    Dieses Skript listet alle gültigen Laufwerke auf.

    set fs = Createobject("Scripting.filesystemobject")
    set drives = fs.drives
    for each drive in drives
    list = list & drive & vbCr
    next
    msgbox list

    Stand: 13.10.2005

    [zurück]

    Laufwerksverfügbarkeit testen

    Dieses Script testet, ob eine C-Platte vorhanden ist.

    set fs = CreateObject("Scripting.FileSystemObject")
    if fs.driveexists("c:") then
    msgbox("Laufwerk verfügbar!")
    else
    MSGBOX ("Laufwerk nicht verfügbar!")
    end if

    Stand: 13.10.2005

    [zurück]

    Ordner anlegen


    Dieses Script legt den Ordner "C:\test\c" an.

    set fs = CreateObject("Scripting.FileSystemObject")
    set folder = fs.createfolder("C:\test\c")

    Stand: 13.10.2005

    [zurück]

    Ordner kopieren

    Für dieses Sciprt muss der Ordner "c:\test\a" und "c:\test\b" existieren.
    Möglichkeit 1:

    Dieses Skript überschreibt auch bereits existierende Ordner- Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.Getfolder("c:\test\a")
    f1.copy ("c:\test\b\a")


    Möglichkeit 2:
    Dieses Skript kopiert ebenfalls den Ordner. ("true": überschreiben und "false": nicht überschreiben)

    Set fs = CreateObject("Scripting.FileSystemObject")
    fs.copyfolder "c:\test\b", "c:\test\a\b",true

    Stand: 13.10.2005

    [zurück]

    Ordner löschen

    Dieses Script löscht den Ordner "C:\test\b", bzw. "C:\test\c".

    Möglichkeit 1:

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.GetFolder("c:\test\b")
    f1.Delete

    Möglichkeit 2:

    set fs = createObject("Scripting.filesystemobject")
    fs.deletefolder "C:\test\c"

    Stand: 13.10.2005

    [zurück]

    Ordner umbennen

    Dieses Script benennt den Ordner "C:\test\a" in "C:\test\c" um.

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.Getfolder("c:\test\a")
    f1.move ("c:\test\c")

    Stand: 13.10.2005

    [zurück]

    Ordner verschieben

    Skript verschiebt Ordner a nach "c:\test\b\", überschreibt aber nicht.

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.Getfolder("c:\test\a")
    f1.move ("c:\test\b\")

    Stand: 13.10.2005

    [zurück]

    Ordner vom Betriebssystem ausgeben

    Dieses Skript findet den Systemordner, den Windowsordner und den Ordner für temporäre Dateien.

    set fs = createobject("Scripting.FileSystemObject")
    winordner = fs.getspecialfolder(0)
    systemordner = fs.getspecialfolder(1)
    tempordner = fs.getspecialfolder(2)
    msgbox "Windows: " & winordner & vbCr & "System: " & systemordner & vbcr & "Temp: " & tempordner

    Stand: 13.10.2005

    [zurück]

    Ordner- Eigenschaften ausgeben

    Dieses Script gibt die Eigenschaften des Ordners "c:\test\a" aus
    und listet die Unterordner auf.

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.GetFolder("c:\test\a")
    msgbox "Pfad: " & f1.Path
    msgbox "Dospfadname: "& f1.shortpath
    msgbox "Dosname: "& f1.shortname
    msgbox "Name: " & f1.Name
    msgbox "Typ: " & f1.Type
    msgbox "Erstellt am: " & f1.DateCreated
    msgbox "Letzter Zugriff: " & f1.DateLastAccessed
    msgbox "Letzte Änderung: " & f1.DateLastModified
    msgbox "Grösse: " & f1.Size & " Bytes"
    for each unterordner in f1.subfolders
    listunter = listunter & unterordner & vbcr
    next
    msgbox "Unterordner: " & vbcr& listunter
    msgbox f1.attributes

    Bei den Attibuten hat die Zahl folgende Bedeutung:
    1 = schreibgeschützt
    2 = versteckt
    4 = System
    8 = Laufwerk
    16 = Ordner
    32 = Archiv
    64 = Verknüpfung
    128 = komprimiert (WinNT)

    Stand: 17.08.2006

    [zurück]

    Ordner- Existenzprüfung

    Dieses Script pürft, ob der Ordner "C:\test" vorhanden ist.

    set fs = CreateObject("Scripting.FileSystemObject")
    if fs.folderexists("c:\test") then
    msgbox("Verzeichnis existiert")
    else
    MSGBOX ("Verzeichnis nicht vorhanden!")
    end if

    Stand: 13.10.2005

    [zurück]

    Scriptbeispiel - Automatisches Löschen


    Dieses Skript könnte Dateien löschen, die z.B. 10 Tag lang nicht geändert wurden.

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.GetFile("c:\test\a.txt")
    if 10 < (date - f1.DateLastModified) then
    msgbox "Datei könnte nun automatisch gelöscht werden."
    else
    msgbox "Datei wird beibehalten."
    end if

    Stand: 13.10.2005

    [zurück]

    Scriptbeispiel - Automatisiertes Umbenennen von Datei-Endungen

    Dieses Skript benennt Dateien um.
    Das Tool schneidet x Zeichen einer Datei ab und setzt x neue Zeichen an.
    Somit können Sie die Datei test.log in die Datei test.txt wandeln.

    ' Tool zum Umbenennen von Dateien in einem Zielordner
    ' abschneiden der Endung und neue Endung einfügen
    ' Es werden keine Unterordner mit umbenannt.
    Set fso = CreateObject("Scripting.FileSystemObject")
    a = inputbox("***ACHTUNG***" & vbcr & vbcr & "Alle Dateien in dem einzugebenden Verzeichnis werden umbenannt!" & vbcr & "Es werden keine Unterverzeichnisse mitberücksichtigt." & vbcr & vbcr & vbcr & "Bitte Zielverzeichnis eingeben: " & vbcr,"Zielverzeichnis eingeben","C:\test")
    if a = cancel then
    msgbox("Script beendet.")
    wscript.quit
    end if
    if fso.folderExists(a) then
    else
    msgbox("Verzeichnis wurde nicht gefunden." & vbcr & "Script beendet.")
    wscript.quit
    end if
    laenge = inputbox("Bitte Zeichenanzahl eingeben, die am Ende abgeschnitten werden soll: " & vbcr,"Zeichenlänge","3")
    if laenge = cancel then
    msgbox("Script beendet.")
    wscript.quit
    end if
    endung = inputbox("Bitte geben Sie die Endung ein, die angehängt werden soll: " & vbcr,"Endung","txt")
    if endung = cancel then
    msgbox("Script beendet.")
    wscript.quit
    end if
    set ordner = fso.getfolder(a)
    for each file in ordner.files
    filename = ""
    filename = file.path
    Set f1 = fso.GetFile(filename)
    namelang = len(f1)
    name = left(f1,namelang-laenge)
    f1.Move (name & endung)
    next
    msgbox ("Done.")


    Stand: 13.10.2005

    [zurück]

    Scriptbeispiel - Dateien und Ordner zählen mit allen Unterordnern


    Dieses Scipt zählt die Dateien und Ordner, auch in den Unterordnern durch.

    set fs = Createobject("Scripting.filesystemobject")
    set start = fs.getfolder("C:\test")
    dim ordner
    dim dateien
    sub zaehlung(obj)
    ordner = ordner + obj.subfolders.count
    dateien = dateien + obj.files.count
    for each unterordner in obj.subfolders
    zaehlung unterordner
    next
    end sub
    zaehlung(start)
    msgbox "Es existieren in " &start & " " & dateien & " Dateien in " & ordner & " Ordner."

    Stand: 13.10.2005

    [zurück]

    Scriptbeispiel - Dateien und Ordner zählen

    Das Script zählt die Dateien und Ordner im Ordner "C:\"

    set fs = Createobject("Scripting.filesystemobject")
    set ordner = fs.getfolder("C:\")
    unterodner = ordner.subfolders.count
    dateien = ordner.files.count
    msgbox "Im Ordner c:\ liegen "& dateien & " Dateien " & "und " & unterodner & " Ordner"

    Stand: 13.10.2005

    [zurück]

    Scriptbeispiel - Inhaltsverzeichnis aller Ordner und Unterordner mit Dateien

    Das Skript beinhaltet eine rekursive Schleife.
    Das Ergebnis wird in einer Textdatei inhalt.txt ausgegeben.

    dim liste
    set fs = createobject("Scripting.FileSystemObject")
    Sub Listordner(ordner)
    Set ordner = fs.getfolder(ordner)
    For Each file In ordner.files
    liste = liste & file.path & vbCr
    Next
    For Each unterordner In ordner.subfolders
    liste = liste & unterordner.path & vbCr
    Listordner unterordner
    next
    End Sub
    ordner ="C:\test\"
    Listordner ordner
    set logbuch = fs.opentextfile("C:\inhalt.txt", 8, true,0)
    logbuch.writeline liste
    logbuch.close
    msgbox("done.")


    Anmerkung:
    Einen besonderen Dank geht an Tobias Glasmacher, der mir bei diesem Script geholfen hat. Danke.

    Stand: 13.10.2005

    [zurück]

    Scriptbeispiel - Inhaltsverzeichnis aller Ordnern und Unterordnern


    Das script listet alle Ordner und Unterordner auf.

    dim liste set fs = createobject("Scripting.FileSystemObject")
    sub Listordner(ordner)
    set ordner = fs.getfolder(ordner)
    for each unterordner in ordner.subfolders
    liste = liste & unterordner.path & vbcr
    Listordner unterordner
    next
    end sub
    ordner ="C:\test"
    Listordner ordner
    msgbox liste

    Stand: 13.10.2005

    [zurück]

    Scriptbeispiel - Speicherplatzcheckprogramm


    Dieses Skript überprüft, ob die zu kopierende Datei "c:\test\a.txt" auf das Ziellaufwerk "C:\" paßt.

    Set fso = CreateObject(Scripting.FileSystemObject)
    Set f1 = fso.GetFile("c:\test\a.txt")
    Set lw = fso.GetDrive(c)
    if lw.freespace (f1.size +1) then
    msgbox ("Nicht genügend Speicher frei!")
    else
    msgbox ("Datei könnte kopiert werden! ")
    end if

    Stand: 13.10.2005

    [zurück]

    Scriptname und Pfad ausgeben

    Dieses Script gibt den Namen und den Pfad des Scriptes aus.

    set fso = createobject("Scripting.filesystemobject")
    name = WScript.ScriptName
    msgbox ("Scriptname: " & name & vbcr _
    & "Pfad: " & fso.getAbsolutePathName(name) )

    Stand: 30.07.2006

    [zurück]

  •    


    [home]

    [wsh-doku]

    [wsh allgemein]

    [wscript shell]

    [wscript network]

    [file system object]

    [wmi]

    [activex data object]

    [links]