Сборник статей по настройке Windows


Windows Script Host (WSH) - файлы и папки - часть 2


Работа с файлами мало отличается от работы с каталогами. Список всех файлов из какого-либо каталога формируется с помощью коллекции Files. Вот небольшой пример, в принципе, очень похожий на первый:

var fso, f, f1, fc, s; fso = new ActiveXObject("Scripting.FileSystemObject"); f = fso.GetFolder("C:"); fc = new Enumerator(f.files); s = ""; for (; !fc.atEnd(); fc.moveNext()) { s += fc.item(); s += "\n"; } WScript.Echo(s);

И без комментариев все довольно понятно. В конце хотелось бы привести пример, реально встречающийся в практике: синхронизация содержимого двух каталогов. Здесь файлы сравниваются по имени и размеру и если у файлов с одинаковым именем оказываются разные размеры, то происходит копирование файла из одного каталога в другой, а информация об этом сохраняется в логе. Таким способом можно синхронизировать какие-то файлы лежащие на сервере и на локальной машине, просто поменяйте пути к папкам на нужные вам. Скрипт написан на VBScript.

Set fso = CreateObject("Scripting.FileSystemObject") Set UFolder = fso.getfolder("C:\Folder1") set UFile = UFolder.files Set OFolder = fso.getfolder("C:\Folder2") Set OFile = OFolder.files

If (fso.FileExists("C:\LOG\copy.log")) Then Set MyFile = fso.OpenTextFile("C:\LOG\copy.log", 8, True) Else Set MyFile = fso.CreateTextFile("C:\LOG\copy.log") end if

For Each f1 in UFile FileToCopy = UFolder&"\"&f1.Name For Each f2 in OFile if f1.Name = f2.Name then if f1.Size = f2.Size then else fso.CopyFile FileToCopy, OFolder&"\"&f1.Name MyFile.WriteLine(Cstr(Date)&" "&Cstr(Time)&" Файл "&f1.Name&" обновлен. Размер "&f1.Size) end if else end if Next Next

MyFile.Close

© 2003-2004 К. Тарасов, И. Чеботарев

http://www.whatis.ru/




Начало  Назад  Вперед