L'oggetto FileSystemObject e alcuni esempi di utilizzo (Parte II)

Pagina 2 di 2

Scrivere un file

L'operazione di scrittura di un file e' analoga aquella di lettura, solo che si utilizza il metodoWrite al posto di quello Read (o ReadLine).

 

Dim fsoDim fileDim string' NOTA:' si suppone che 'fileName' contenga il nome del' file da scrivere.' creo il FileSystemObjectSet fso = CreateObject("Scripting.FileSystemObject")' pulisco la stringastring = ""   ' verifico che il file NON esistaIf Not fso.FileExists( fileName ) Then   ' accedo al file   Set file = fso.OpenTextFile( fileName, 2, True, 0)' inserisco 3 righe nel file   file.Write "Questa e' la riga numero uno" & vbCrLf   file.Write "Questa e' la riga numero due" & vbCrLf   file.Write "Questa e' la riga numero tre" & vbCrLffile.Close   Set file=Nothing   End IfSet fso=Nothing

 

Modificare un file esistente

Il sistema piu' semplice per modificare un file gia'esistente consiste nell'aprire il file in lettura,crearne uno nuovo in scrittura, leggersi tutto il fileoriginale, copiando e modificando il contenuto nel nuovofile. Al termine si elimina il vecchio file e si rinomina ilnuovo file.

Per ottenere un nuovo nome di file e' possibileutilizzare GetTempName che restituisce un nome di fileottenuto in modo casuale.

Per 'rinominare' il file una volta completatal'elaborazione, si puo' usare invece MoveFile, checonsente di cambiare il nome del file in un colpo solo.

Il semplice codice di esempio legge un file e ne crea unonuovo premettendo ad ogni riga 'Nuovo':

Dim fsoDim inFileDim outFileDim riga' NOTA:' si suppone che 'fileName' contenga il nome del ' file da leggere.' creo il FileSystemObjectSet fso = CreateObject("Scripting.FileSystemObject")' verifico che il file di input esistaIf fso.FileExists( fileName ) Then   ' creo un nome di file temporaneo   newFile = fso.GetTempName' apro i file   Set outFile = fso.OpenTextFile( newFile, 2, True, 0)   Set inFile = fso.OpenTextFile( fileName, 1, False, 0 )   ' ciclo e mi leggo tutto il file di input   Do While Not inFile.AtEndOfStream   ' leggo una rigariga = inFile.ReadLine()' copio la riga nel nuovo file aggiungendo 'nuovo' all'inizioriga = "Nuovo " & riga & vbCrLfoutFile.Write riga   Loop   ' chiudo i due file ed elimino gli oggettiinFile.Close   outFile.CloseSet inFile = Nothing   Set outFile = Nothing' adesso elimino il vecchio file e rinomino quello nuovo   fso.DeleteFile fileName   fso.MoveFile newFile, fileName   End If' elimino il FileSystemObjectSet fso=Nothing

 

Rinominare i files

Parecchie volte si ha il problema di rinominare un blocco difile assegnando a tutti un nome 'coerente', peresempio un blocco di documenti Word che devono esserechiamati Docum001.doc, Docum002.doc e cosi' via.

Questo e' proprio un lavoro per uno Script!

Il codice seguente chiede l'estensione dei file daelaborare e l'inizio del nome dei nuovi file da creare,quindi cicla su tutti i file presenti e se il file haquell'estensione, copia il file assegnandogli un nuovonome.

NOTA: Questo codice funziona con WSH, con ASP e'possibile adattarlo.

 

' THE FILE RENAMER'' Cicla su tutti i file in una directory creando nuovi ' nomi in base alle regole imposte''Dim file ' il file sotto 'processo'Dim folder     ' la directory correnteDim fso  ' file system objectDim inPatt     ' pattern in ingressoDim outPatt    ' pattern in uscitaDim counter    ' contatore dei fileDim ext  ' estensione del fileDim newName    ' nuovo nome da assegnare al file' chiedo il pattern in ingressoinPatt = ""Do While inPatt = ""   inPatt = InputBox("Inserire l'estensione dei _ file (es. doc)" , "Pattern" )Loop' chiedo il pattern in uscitaoutPatt = ""Do While outPatt = ""   outPatt = InputBox("Inserire il 'pattern' di _ file da creare" , "Pattern" )Loop' Creo il FileSystemObjectSet fso=CreateObject("Scripting.FileSystemObject")' recupero la directory correnteSet folder=fso.GetFolder(".")' azzero il contatorecounter = 0' scorro tutti i file corrispondentiFor Each file in folder.Files   ' verifico se il file rientra nel 'pattern' indicato   ext = Right( file.Name, 3 )   If ext = inPatt Then' ciclo per il controllo degli erroriDo While True   ' incremento il contatore di file trovati   counter = counter + 1' creo il nuovo nomenewName = outPatt & counter & "." & inPatt' verifico che il file non ci sia gia'   If Not fso.FileExists( newName ) Then' Ok, rinominofso.MoveFile file.Name, newNameExit Do   End If   Loop   End If   Next ' al termine del ciclo visualizzo quanti file ho elaboratoMsgBox "Sono stati elaborati " & counter & " file." , _  vbOkOnly + vbInformation, "Il Rinominatore"

 

 

Conclusioni

Il codice presentato qui' e' stato testato con il WSHversione 1.0 e con il PWS 1.0 di FrontPage. In tutti i casiil codice ha funzionato come si supponeva dovesse.

Chiaramente, questi sono solamente degli esempi.

Per ulteriori informazioni sul FileSystemObject, consultareil Tutorial del Windows Scripting Host, reperibile sul sitodella Microsoft o l'MSDN (cercare FileSystemObject).



Ti potrebbe interessare anche

commenta la notizia