JPC
JPC

Reputation: 8286

jscript - getting list of files in directory

This seems like it should be easy. I've never used JScript before and I'm looking at the JScript api provided by microsoft but no luck. Here's what I have:

    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();

I get an error about fitem.Name that it's not an object or null or something. However, there are definitely files in that folder.

Upvotes: 2

Views: 11713

Answers (3)

James
James

Reputation: 22237

This works for me, I had to change the path to the file or I get access denied (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>

Upvotes: 3

Helen
Helen

Reputation: 97619

The items variable in your script holds a FolderItems collection rather than an array. To access the collection's items, you need to use the Items(index) notation. So, replacing

fitem = items[i];

with

fitem = items.Item(i);

will make the script work.

Upvotes: 3

JPC
JPC

Reputation: 8286

Apparently you can't access it like an array and have to call the Item() method.

Upvotes: 0

Related Questions