jscript - получение списка файлов в каталоге - PullRequest
2 голосов
/ 19 апреля 2011

Кажется, это должно быть легко.Я никогда не использовал JScript прежде, и я смотрю на API JScript, предоставленный Microsoft, но не повезло.Вот что у меня есть:

    var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.CreateTextFile("New Tracks.txt", true);
var objShell = new ActiveXObject("Shell.Application");
var lib;
lib = objShell.BrowseForFolder(0,"Select Library Folder",0);
items = lib.Items()
for (i=0;i<items.Count;i++)
{
    fitem = items[i];
    tf.WriteLine(fitem.Name);
}
WScript.Echo("Done");
tf.Close();

Я получаю сообщение об ошибке fitem.Name, что это не объект, не ноль или что-то еще.Однако в этой папке определенно есть файлы.

Ответы [ 3 ]

3 голосов
/ 19 апреля 2011

Переменная items в вашем скрипте содержит коллекцию FolderItems, а не массив. Чтобы получить доступ к элементам коллекции, вам необходимо использовать обозначение Items(index). Итак, замена

fitem = items[i];

с

fitem = items.Item(i);

заставит скрипт работать.

2 голосов
/ 19 апреля 2011

Это работает для меня, мне пришлось изменить путь к файлу или я получил отказ в доступе (win 7).

  <script language="JScript">
var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.CreateTextFile("c:\\New Tracks.txt", true);

var objShell = new ActiveXObject("Shell.Application");
var lib;

lib = objShell.BrowseForFolder(0,"Select Library Folder",0);

var en = new Enumerator(lib.Items());

for (;!en.atEnd(); en.moveNext()) {
    tf.WriteLine(en.item());
}

WScript.Echo("Done");
tf.Close();
  </script>
0 голосов
/ 19 апреля 2011

Очевидно, что вы не можете получить к нему доступ как к массиву и должны вызывать метод Item ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...