Reputation: 8286
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
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
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
Reputation: 8286
Apparently you can't access it like an array and have to call the Item() method.
Upvotes: 0