Показать полную графическую версию : Нужна помощь в VBS(Сбор информации о файлах)
MakeMeFeel
02-09-2011, 13:19
Имеется корневая папка "photo", в которой содержится № кол-во папок, которое постоянно изменяется. В них содержится неизвестное кол-во файлов, которые постоянно добавляются и редактируются.
Задача №1. Написать скрипт, который создаст файл "info", в котором будет содержаться следующая информация: путь к файлу, размер, дата последнего изменения.
Задача №2. Написать скрипт, который проверит все файлы в корневой папке "photo", сравнит информацию о файле (размер, дата последнего изменения) c содержащимся в файле "info", и в случае появления различий или нового файла, запишет путь к изменившемуся/новому файлу в файл "foredit"
К сожалению в коде я не силен, а времени чтобы поднять знания для выполнения данной задачи нету. Буду благодарен за помощь.
MakeMeFeel
04-09-2011, 19:14
ниукого нет никаких идей?
megaloman
05-09-2011, 15:26
Public FSO, Finfo, RegMaska
AllDir = "C:\{Disk_F}\JS_Host" ' --------- Полное имя рабочего каталога (без слэжа \ на конце)
Info = "C:\kuku.info"
Maska= "^.*\.xls"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Finfo = FSO.OpenTextFile(Info, 2, True)
Set RegMaska = New RegExp
RegMaska.Pattern = Maska
RegMaska.IgnoreCase = True
Call AllFiles(AllDir)
Finfo.Close
MsgBox "Скрипт завершился"
' ---------------------------------------------------------------------------
Sub AllFiles(WDir)
Set Folds = FSO.GetFolder(WDir)
Set SubF = Folds.SubFolders
Set Files = Folds.Files
For Each jF In Files
If RegMaska.Test(jf) Then Finfo.WriteLine jF + " " + CStr(jF.DateLastModified) + " " + CStr(jF.Size)
Next
For Each Folder In SubF
Call AllFiles(WDir + "\" + Folder.Name)
Next
End Sub Public FSO, Finfo, OldFiles, RegMaska
AllDir = "C:\{Disk_F}\JS_Host" ' --------- Полное имя рабочего каталога (без слэжа \ на конце)
Info = "C:\kuku.info"
Edit = "C:\kuku.edit"
Maska= "^.*\.xls"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set RegMaska = New RegExp
RegMaska.Pattern = Maska
RegMaska.IgnoreCase = True
Set Finfo = FSO.OpenTextFile(Info, 1, False)
OldFiles = Finfo.ReadAll
Finfo.Close
Set Finfo = FSO.OpenTextFile(Edit, 2, True)
Call AllFiles2(AllDir)
Finfo.Close
MsgBox "Скрипт завершился"
' ---------------------------------------------------------------------------
Sub AllFiles2(WDir)
Set Folds = FSO.GetFolder(WDir)
Set SubF = Folds.SubFolders
Set Files = Folds.Files
For Each jF In Files
If RegMaska.Test(jf) Then
InFile = jF + " " + CStr(jF.DateLastModified) + " " + CStr(jF.Size)
If InStr(OldFiles, InFile) = 0 Then Finfo.WriteLine InFile
End If
Next
For Each Folder In SubF
Call AllFiles2(WDir + "\" + Folder.Name)
Next
End Sub Укажите в скриптах свои пути и нужную маску в регулярном выражении (сейчас там указаны файлы с расширением .xls)
MakeMeFeel
06-09-2011, 12:09
cпасибо еще раз(:
MakeMeFeel
08-09-2011, 17:03
мне жутко неудобно, но очень нужна помощь. Времени разобраться с vbs к сожаления не дают но требуют исправить скрипт.
info.txt - в нем содержиться имя файла, размер, дата последнего редактирования
foredit.txt - содержит путь к файлу
скрипт ищет только *.jpg файлы
Требуется чтобы в каждой папке, находящейся в корневом каталоге, содержался файл info.txt
Алгоритм должен работать следующим образом:
Проверяется наличие файла info.txt в текущей папке, если файл найден:
создается файл foredit.txt
происходит сравнение текущей информации о файлах с информацией содержащейся в файле "info.txt"
(имя, размер, дата последнего редактирования)
при нахождении различий:
в файл foredit записывается путь к измененному/новому файлу.
запускается внешняя программа со след. параметрами
"d:\nconvert.exe -overwrite -out jpeg -keepfiledate -i -opthuff -rtype lanczos -resize 1600 1200 -q 80 <путь к файлу foredit.txt>"
(программа выполняет все автоматически и сама закрывается)
Скрипт продалжает работу после завершения процесса предыдущей программы
В файл info.txt записывается обновленная информация
Файл foredit.txt удаляется
если различий нет, то скрипт переходит к след. папке
Если файл info.txt не найден:
Создается файл info.txt
Создается файл foredit.txt
В файл foredit.txt записывается путь ко всем файлам находящимся в данной папке
Запускается внешняя программа со след. параметрами:
"d:\nconvert.exe -overwrite -out jpeg -keepfiledate -i -opthuff -rtype lanczos -resize 1600 1200 -q 80 <путь к файлу foredit.txt>"
(программа выполняет все автоматически и сама закрывается)
Скрипт продалжает работу после завершения процесса предыдущей программы
В файл info.txt записывается информация о файлах
Файл foredit.txt удаляется.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.