Скрипт.Наличие файлов в папках

ranet

Задача.
Есть сетевой путь, который ведет к папке, в корне которой находится 10килопапок , нужно заполнить таблицу на msSQL (имяПапки, кол-во_файлов_в_ней). Имена папок уникальны, в папках могут быть подпапки, но их можно не анализировать. Скрипт желательно на vbs, так как его просто в DTS пакет вставить.
Задача легко решается с использованием FSO, но не хочется изобретать велосипед, наверняка кто-то уже писал подобное
Желательно, чтобы работало максимально быстро, активно меняются 500-1000 папок, ежедневно работает NT'шный бэкапап, т.е. можно использовать атрибут А, чтобы не анализировать то, что не менялось с последнего раза.
Спасибо
P.S. приветсвуются мысли по алгоритму работы и кусочки кода

EVPATIY

если путь локальный и есть доступ по ftp - то делать нечего (php/MySQL могу а если нет - то конечно нетривиально
в первом случае
<?php
1.chdir..
2.readdir..
3.(is_dir)..

ranet

задача тривиальна, просто если кто-то решал ее ну а коли никто не поделится, завтра напишу и сюда помещю. php не устроит, это ведь msSQL, a не mySQL
путь в рамках локально сети, можно считать что сканировать нужно локальный диск

EVPATIY

а php и с MSSQL могёт... только я работал только с MySQL. В принципе, разница должна быть маленькой.
Так что если php подходит - дай знать. И еще - тебе базу нужно забить названиями файлов или папок?

ranet

имена не нужны, вообще имена папок это числа (ID из таблицы а имена файлов не интересуют. тут дело не в том сможет ли php работать с MS SQL, и tsql здесь не причем, в первом же посте я написал, что хочу это завернуть в DTS пакет, с vbs это будет сделать максимально легко

EVPATIY

алгоритм он на всех языках:
0. название основной папки записываешь первым элементом в массив
1. открываешь папку (т.е. делаешь комманду chdir или cd)
2. читаешь все содержимое папки
3. для каждого элемента папки проверяешь - если папка - записываешь в массив под следующим номером, если файл - записываешь в БД
4. выполняешь пп. 1-3 до тех пор, пока что-то есть в массиве.

ranet

FilesInSubfolder.wsf

<?xml version="1.0" encoding="ISO-8859-1"?>
<job id="FilesInSubfolder">
<reference guid='{420B2830-E718-11CF-893D-00A0C9054228}'/>
<script language="VBscript">
<![CDATA[
Dim fso, fldRoot, fld, txtStream
Set fso = CreateObject("Scripting.FileSystemObject")
Set fldRoot = fso.GetFolder("C:\Program Files")
Set txtStream = fso.OpenTextFile("c:\list.txt", ForWriting, True)
For Each fld In fldRoot.SubFolders
txtStream.WriteLine (fld.Name & ", " & fld.Files.Count)
Next
]]>
</script>
</job>

Оставить комментарий
Имя или ник:
Комментарий: