1

Тема: VBS или JS:Сортировка файлов по подпапкам

Я иногда обрабатываю фотки автоматом в Фотошопе. Он обрабатывает сразу папку с подпапками, а результат кидает в одну папку. Вот пытался сделать скрипт VBS сортирующий файл обратно в подпапки да что-то не получается. Т.е. есть РезПапка с результатами и ИсхПапка с подпапками, надо пройтись по подпапкам если там есть файл с таким именем, то файл из РезПапки перенести в эту подпапку.
Кто может сделать на VBS или JS все равно?

2

Re: VBS или JS:Сортировка файлов по подпапкам

А можно взглянуть на наработки, в которых что то не получилось ?

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

3 (изменено: griha09, 2012-01-29 16:28:28)

Re: VBS или JS:Сортировка файлов по подпапкам

papka="D:\RezPapka\"  'откуда копируем
papka2="D:\IshPapka\" 'куда копируем
Set oShell = WScript.CreateObject ("WScript.Shell")
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.IgnoreCase = True
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(papka)
Set Folder2 = FSO.GetFolder(papka2)

For Each File In Folder.Files
Set File = FSO.GetFile(File)

For Each File2 In Folder2.Files
Set File2 = FSO.GetFile(File)

If File.Name=File2.Name Then    
File.Move Folder2

End If

Next


Next

4

Re: VBS или JS:Сортировка файлов по подпапкам

Если не особо вдаваться в вопросы отказоустойчивости и оптимизации, то наверное как то так.


Option Explicit
Const SrcFolderPath = "ИсхПапка"
Const ResFolderPath = "РезПапка"

Dim FileSystemObject, TextStream, Folder, SubFolder, File, FilePath
Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
Set TextStream = FileSystemObject.OpenTextFile("log.txt",8,True)

TextStream.WriteLine "----- " & Now & " -----"

RecursiveFolderScan SrcFolderPath

MsgBox "Обработка завершена",vbInformation

'Создаём процедуру рекурсивного обхода каталога
Sub RecursiveFolderScan(FolderPath)
    'Получаем объектную модель текущего каталога
    Set Folder = FileSystemObject.GetFolder(FolderPath)
    
    'Перебираем все файлы в текущем каталоге
    For Each File in Folder.Files
        'Проверяем существование аналогичного файла в результирующем каталоге
        FilePath = FileSystemObject.BuildPath(ResFolderPath,File.Name)
        If FileSystemObject.FileExists(FilePath) Then
            'Если он существует, то производим замену
            FileSystemObject.CopyFile FilePath, FileSystemObject.BuildPath(Folder.Path,"\")
            AppendToLog "файл """ & File.Name & """ скопирован в """ & Folder.Path & """."
        End if
    Next
    
    'Перебираем все подкаталоги в каталоге
    For Each SubFolder in Folder.SubFolders
        RecursiveFolderScan(SubFolder.Path)
    Next
End Sub

Sub AppendToLog(Text)
    TextStream.WriteLine Time & ":" & Text
End Sub
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

5

Re: VBS или JS:Сортировка файлов по подпапкам

Все отлично работает! Большое спасибо!