jscript - 获取目录中的文件列表

时间:2011-04-19 18:44:59

标签: javascript scripting

这似乎应该很容易。我之前从未使用过JScript,我正在查看微软提供的JScript api,但没有运气。这就是我所拥有的:

    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的错误,它不是对象或null或其他内容。但是,该文件夹中肯定有文件。

3 个答案:

答案 0 :(得分:3)

脚本中的items变量包含FolderItems集合而不是数组。要访问集合的项目,您需要使用Items(index)表示法。所以,替换

fitem = items[i];

fitem = items.Item(i);

将使脚本有效。

答案 1 :(得分:2)

这对我有用,我不得不改变文件的路径或者我被拒绝访问(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>

答案 2 :(得分:0)

显然你不能像数组一样访问它,必须调用Item()方法。