Flasher

|
Posted: Thu Jan 23, 2014 09:51 Post subject: |
|
|
gendalv wrote: | Структура папок/имена папок одинаковы (пути файлов совпадают)
т.е. нужно сравнивать/перемещать из: d:\папка 1\подпапка a\подпапка b\файл в d:\папка 2\подпапка a\подпапка b\файл | По логике должны совпасть только относительные пути, но никак не абсолютные. Чем в данном случае являются пробелы?
И запись разве не так должна выглядеть?:
Quote: | d:\папка 1\подпапка\a\подпапка\b\файл в d:\папка 2\подпапка\a\подпапка\b\файл |
В общем, если я правильно понял задачу, то vbs: Code: | '=============================================================================
' Замена в получателе на меньшие по размеру выбранные файлы
' или файлы из аналогичной структуры выбранных каталогов без учёта расширения
' с перемещением бОльших файлов из получателя в корзину
' Условие: путь запуска пустой
' Параметры: %WL "<Путь получателя>"
'=============================================================================
With WScript.Arguments
If .Count = 0 Then WScript.Quit
List = .Item(0) : Target = .Item(1)
End With : If Right(Target, 1) <> "\" Then Target = Target & "\"
Set SHA = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
LDir = Len(CreateObject("WScript.Shell").CurrentDirectory) + 2
Set Basket = SHA.Namespace(&Ha&) : Set Items = SHA.NameSpace(Target).Items
For Each F in Split(FSO.GetFile(List).OpenAsTextStream(1,-1).ReadAll, vbNewLine)
If Trim(F) > vbNullString Then
If FSO.FolderExists(F) Then ForFolder FSO.GetFolder(F) Else ForFile F, Items, Target
End If
Next : Set Items = Nothing : Set Basket = Nothing : Set FSO = Nothing : Set SHA = Nothing
Sub ForFolder(Folder)
For Each Fl In Folder.SubFolders : ForFolder Fl : Next
TF = Target & Mid(Folder, LDir) & "\"
If FSO.FolderExists(TF) Then
Set Itms = SHA.NameSpace(TF).Items
For Each Fl In Folder.Files : ForFile Fl, Itms, TF : Next
End If
End Sub
Sub ForFile(File, Elems, T)
Elems.Filter 192, FSO.GetBaseName(File) & ".*"
If Elems.Count = 1 Then
Set I = Elems.Item(0)
If FSO.GetFile(File).Size < I.Size Then
Basket.MoveHere I, 24 : FSO.MoveFile File, T
End If
End If
End Sub |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|