Lucrul cu obiecte din sistemul de fișiere din scriptul VBScript

Principalele caracteristici ale colaborării cu obiecte de sistem de fișiere prin WSH sunt implementate utilizând clasa FileSystemObject. care se află fizic în biblioteca Scrrun. dll. De obicei, lucrarea începe cu crearea obiectului FSO:







Setați fso1 = WScript.CreateObject ("Scripting.FileSystemObject")

Apoi, utilizăm obiectul creat pentru a efectua diverse operații.

Caracteristicile cele mai frecvent utilizate:

Setați oDrives = fso1.Drives

Pentru fiecare Înăuntru oDrives

MsgBox ("Scrisoarea de unitate:" i.DriveLetter "Tip disc:" i.DriveType "Disc Label" i.VolumeName "Pregătirea pentru muncă:" i.IsReady)

Mai multe despre obiectul Drive - de mai jos.

2) obțineți o listă cu toate subdirectoarele din directorul dat (utilizați proprietatea GetFolder și continuați capabilitățile obiectului Folder):

Setați oFoldere = fso1.GetFolder ("C:")

Setați oSubfolders = oFolders.SubFolders

Pentru fiecare oFolder în subdirectoarele

strListFolders = strListFolders oFolder.Name vbCrLf

3) obțineți informații despre dimensiunea fizică a discului (proprietatea obiectului Drive TotalSize):

Setați oDrive1 = fso1.GetDrive ("C")

nSize = FormatNumber (oDrive1.TotalSize, 0)

4) pentru a obține informații cu privire la cantitatea de spațiu liber (proprietăți obiect și de unitate Freespace AvailableSpace; Freespace afișează informații despre spațiul liber fizic, AvailableSpace - informații despre spațiul liber disponibil pentru utilizator - pe cota de disc)

Setați oDrive1 = fso1.GetDrive ("C")

nSize = FormatNumber (oDrive1.TotalSize, 0)

Mută ​​și șterge dosarele în același mod.

6) ștergeți toate fișierele cu un anumit nume (de exemplu, combaterea virușilor sau a jucăriilor pe calculator). Înlăturarea în sine este simplă: metoda DeleteFile este folosită pentru a face acest lucru:

fso1. DeleteFile "C :. \ Scandisk log", trueoznachaet adevărat“, care elimina inclusiv onlyfayly blocate pentru editare

Cu toate acestea, de obicei, trebuie să rezolvăm încă două probleme:

o Asigurați-vă că nu există o eroare de execuție. dacă există o problemă cu ștergerea fișierului (fișierul este deschis etc.)

o conectați la directorul dorit

o trece prin toate directoarele și subdirectoarele, ștergând acest fișier.

Fiecare dintre aceste sarcini este mai ușor de rezolvat cu ajutorul unor subprocese separate. Primul este rezolvat după cum urmează:







La reluarea erorii următoare

Dacă Err.Number <> Atunci

WScript.Echo "Eroare la ștergerea fișierului:" sFile

Pentru simplificare, afișăm mesajul utilizatorului, dar în realitate este mai bine să scrieți protocolul într-un fișier text pentru administrator în cazul unei erori (mai multe despre acest lucru mai târziu).

Pentru a vă conecta la subdirectorul corespunzător:

Funcția GetFolder (sFolder)

La reluarea erorii următoare

Setați GetFolder = Fso1.GetFolder (sFolder)

Dacă Err.Number <> Atunci

WScript.Echo "Eroare la conectarea la folder:" sFolder

Pentru a trece prin toate subdirectoarele:

SubFoldSubFolders (objFolder)

Dacă objFolder <> "\ System Volume Information" Apoi

Pentru fiecare iFolder în folderul objFolder.Sub

Verificarea informațiilor despre volumul sistemului - deoarece atunci când accesați, apare o eroare.

Acum ne rezolvăm problema:

Setați objDir = GetFolder (sDir)

Sub MainSub (objDir)

Pentru fiecare eFile în OBDDir.Files

Dacă LCase (eFile.Name) = LCase (sFile) Apoi

Desigur, în activitatea reală, este mai bine să vă logați ștergeți toate fișierele.

7) modificați atributele fișierului (de exemplu, ascundeți fișierele importante sau setați-le la modul numai pentru citire).

Pentru a vă conecta la un fișier existent, este mai bine să utilizați o subrutină GetFile specială (similară cu GetFolder în exemplul anterior):

La reluarea erorii următoare

Setați GetFile = Fso1.GetFile (sFile)

Dacă Err.Number <> Atunci

WScript.Echo ("Eroare la conectarea la:" sFile

Instalați calea cea mai ușoară (în exemplul nostru, setați valoarea Numai pentru citire):

Setați gFile = GetFile ("C: \ test1.txt")

8) citi informații dintr-un fișier text

Set TxtStream = fso1.OpenTextFile ( "\\ london1 \ c $ \ test1.txt")

În timp ce nu (TxtStream.atEndOfStream)

Text = Text TxtStream.ReadLine vbCrlf

Este recomandat să deschideți fișiere mari pentru citire în fereastra Internet Explorer folosind aceeași metodă ca Navigare.

9) scrieți / adăugați informații într-un fișier text. Această caracteristică este utilizată foarte des - de exemplu, pentru înregistrarea progresului unui script sau pentru înregistrarea rezultatelor unui studiu al computerelor utilizatorilor. În unele situații, fișierul poate fi procesat mai departe - de exemplu, trimiteți-l prin e-mail prin mijloace CDO (despre acest lucru în modulele următoare) sau prin intermediul DTS pus pe serverul bazei de date.

Se pare ca aceasta:

Dacă Fso1.FileExists ("C: \ test1.txt") Apoi

Set txtStreamOut = fso1.OpenTextFile ( "C: \ test1.txt", 8, Adevărat)

"2" înseamnă "deschis pentru a adăuga", True-write la Unicode

txtStreamOut.WriteLine "Linia 1"

txtStreamOut.WriteLine "Linia 1"

Setați MyFile = fso1.CreateTextFile ("C: \ test1.txt")

MyFile.WriteLine "Linia 1"

MyFile.WriteLine "Linia 2"

Limitări WSH la lucrul cu sistemul de fișiere:

  • WSH nu poate funcționa cu fișiere binare - numai fișiere text;
  • Cu WSH, nu puteți configura permisiunile și auditul pentru fișiere (acest lucru se poate face cu ajutorul instrumentelor WMI).

Multe caracteristici suplimentare de lucru în sistemul de fișiere pot fi obținute cu ajutorul utilitarelor de linie de comandă din Resource Kit:







Trimiteți-le prietenilor: