 |
|
Пакетная индексация содержимого папки
Имеется код позволяющий в папке D:\test проиндексировать все содержащиеся в ней субпапки всех уровней вложения и выложить результат в файл scan_tree.txt помещаемый в папку где находится файл с кодом:
Код:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fn = "scan_tree.txt";
var f = fso.CreateTextFile(fn,true,true);
var main_folder_path="D:\\test";
var main_folder = fso.GetFolder(main_folder_path);
DirWithSubFolders(main_folder);
// ================================================================
function DirWithSubFolders(_folder){
if(_folder.Attributes & 2) {return} //(пропускаем скрытые файлы)
var more_folders = new Enumerator(_folder.SubFolders);
for (;!more_folders.atEnd();more_folders.moveNext()){
OneFolder = more_folders.item();
f.writeline(OneFolder.Path);
DirWithSubFolders (OneFolder);
}}
Требуется преобразовать его в код исполняющий эту задачу пакетно т.е. в отношении набора папок, перечисленного в файле D:\test.txt:
-------------
D:\test
D:\xyz\abc
......
-------------
с размещением итогов по каждой такой папке в отдельном индексном файле:
D:\test\scan_tree.txt
D:\xyz\abc\scan_tree.txt
......
|
нашлось решение этой интересной, на мой взгляд, задачи:
https://www.cyberforum.ru/vbscript-w...l#post14951684
А вот это мое:
Код:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var list = fso.OpenTextFile("D:\\test.txt", 1, true);
var str = list.ReadAll();
//создается массив строк файла-списка
var elm = str.replace(/\r/g, '').split('\n');
list.Close();
var myEnum = new Enumerator(elm);
for (i=0; !myEnum.atEnd(); myEnum.moveNext()){
fScan(myEnum.item())
function fScan(main_folder_path) {
var fn = myEnum.item()+"\\scan_tree.txt";
var f = fso.CreateTextFile(fn,true,true);
var main_folder = fso.GetFolder(main_folder_path);
DirWithSubFolders(main_folder);
// ================================================================
function DirWithSubFolders(_folder){
if(_folder.Attributes & 2) {return} //(пропускаем скрытые файлы)
var more_folders = new Enumerator(_folder.SubFolders);
for (;!more_folders.atEnd(); more_folders.moveNext()){
OneFolder = more_folders.item();
f.writeline(OneFolder.Path);
DirWithSubFolders (OneFolder);
}}}}
WScript.Echo("Finish");
|
Цитата:
Цитата ruslaw
этой интересной, на мой взгляд, задачи: »
|
А на мой взгляд, эта задача интересна только извращенцам WSH. Потому что на PowerShell решается элементарным ванлайнером
Код:
Get-Content -Path input.txt | Foreach-Object {Get-ChildItem -recurse $_ | Out-File -Append -Path scan_tree.txt}
В нюансы опубликованного вами кода не вникал, только в описание задачи.
|
Возможно Вы правы, но PS это целый мир ...
|
ruslaw, и это повод его изучать, все равно вы WSH не владеете, судя по вопросу.
|
у меня спорадические ограниченные задачи, для меня такое поведение было бы нерентабельным
Но Ваш пример убедителен ...
|
Время: 20:02.
© OSzone.net 2001-