- WScript
- FileSystemObject
- Drive
- File
- Folder
- TextStream
- Shell
- WshNetwork
- WshShell
- Wsh[Url]Shortcut
- WshScriptExec
- ADOStreamObject
- HTA
- CMD
- uconv
- Enumerator
- Источник
Объект Enumerator
С помощью объекта Enumerator можно получить доступ к любому элементу коллекции (в VBScript для этого служит цикл For Each
).
Коллекцией в языке JScript называется множество элементов, которое отличается от массива тем, что к элементам коллекции нельзя получить прямой доступ с помощью индексов — можно только перемешать указатель текущего элемента на самый первый или следующий относительно текущего элемент.
Для создания нового объекта встроенного класса Enumerator используется конструктор следующего вида:var е = new Enumerator(collection);
- collection
- Коллекция, для доступа к элементам которой и создается объект класса Enumerator. Сами коллекции обычно являются свойствами других объектов.
У объекта Enumerator нет свойств, а есть только 4 метода. Они позволяют получать доступ к начальному, следующему и текущему элементу коллекции и определить, достигнут ли конец коллекции.
- Метод atEnd() возвращает
true
, если текущий элемент коллекции является последним в ней, иfalse
в противном случае. - Метод item() возвращает текущий элемент коллекции. Если коллекция пуста или текущий элемент не определен, то возвращается значение
undefined
. - Метод moveFirst() перемещает указатель на первый элемент коллекции.
- Метод moveNext() перемещает указатель на следующий элемент коллекции.
Примеры
//Объявляем переменные var FSO, Folder, Files, s; //Создаем объект FileSystemObject FSO = WScript.CreateObject("Scripting.FileSystemObject"); // Создаем объект Folder для корневого диска С:\AA Folder=FSO.GetFolder("С:\\AA"); // Создаем коллекцию файлов каталога Files = new Enumerator(Folder.Files); //Цикл по всем файлам for (Files.moveFirst(); !Files.atEnd; Files.moveNext) { //Добавляем строку с именем файла s+=Files.item.Name+"\n"; //Выводим полученные строки на экран } WScript.Echo(s);
var x; var fso = new ActiveXObject("Scripting.FileSystemObject"); var fc = new Enumerator(fso.Drives); for (fc.moveFirst(); !fc.atEnd(); fc.moveNext()) { x = fc.item(); s='Drive '+x.DriveLetter+': '; if (x.DriveType == 0) s += "неизвестное устройство "; if (x.DriveType == 1) s += "устройство со сменным носителем "; if (x.DriveType == 2) s += "жёсткий диск " ; if (x.DriveType == 3) s += "сетевой диск "; if (x.DriveType == 4) s += "CD-ROM "; if (x.DriveType == 5) s += "RAM-диск "; if (x.IsReady) { namedisk=(x.DriveType == 3)?x.ShareName:x.VolumeName; s += " Name=" +((namedisk.length > 0 )? namedisk : "[NO NAME] "); s +=" FileSystem="+x.FileSystem; s +=" FreeSpace="+Math.floor(x.FreeSpace/1024) +"КБ"; } else s +=" [disk not ready]"; WScript.Echo(s); }