View previous topic :: View next topic |
Author |
Message |
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Nov 06, 2015 22:22 Post subject: |
|
|
Hjkma
Правка неверная. А вот за наводку спасибо. Забыл учесть символ "-" во втором вызове процедуры. См. исправленный вариант. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Hjkma
Joined: 18 Apr 2015 Posts: 178
|
(Separately) Posted: Fri Nov 06, 2015 22:28 Post subject: |
|
|
Flasher
Спасибо большое, все заработало. А правку 0 я поставил чтобы и перемещались файлы в сериях, первая нумерация которых начинается на 0. В общем, скрипт работает. Очень вам благодарен! |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Nov 06, 2015 22:33 Post subject: |
|
|
Hjkma
Пожалуйста. Но правка на ноль никакого отношения к нумерации вообще не имеет. Я же писал над скриптом, что пойду от количества, а не номеров. И если бы единица была лишней, то запись "- 0" там была вообще не нужна, ибо это арифметическое выражение. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Fri Nov 06, 2015 22:35 Post subject: |
|
|
Flasher wrote: | ' Примеры: %WL "%T" 1 | %WL D:\MyFolder | не экономь, запиши в две строки.
труба - это вполне возможный в параметрах символ |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Nov 06, 2015 22:36 Post subject: |
|
|
Tol!k
Ну я же пишу "Примеры:". Вроде понятно. Я ещё двойным или тройным пробелом отделяю, чтобы совсем очевидно было.
И в любом случае нужно исходить из указанного числа параметров. Тут проблема лежала скорее в плоскости общего непонимания устройства параметров.
P.S.: Пиши с заглавных, ставь точки в конце.
Добавлено спустя 22 минуты:
Flasher wrote: | И если бы единица была лишней | Хм. А она там действительно лишняя. Убрал. Иначе, если в папке окажутся файлы, отличающиеся лишь _ или - и входящие в один диапазон, то целевая папка будет иметь уже сдвоенный диапазон. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Hjkma
Joined: 18 Apr 2015 Posts: 178
|
(Separately) Posted: Fri Nov 06, 2015 23:09 Post subject: |
|
|
Еще один вопрос. А как бы изменять границы диапазонов по собственному желанию? Если я например хочу не 0-10, 11-20, 21-30, а 0-5, 6-12, 13-20? В общем хотелось бы иметь возможность самому задавать диапазоны, задавая соответствующие цифры в скрипте, это очень пригодилось бы в будущем. Это возможно? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Nov 07, 2015 02:14 Post subject: |
|
|
Статичных безинтервальных диапазонов может быть сколько угодно, верхний лимит ограничит потенциал для создания новых диапазонов. Поэтому интервальное решение куда практичнее и лаконичнее. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Hjkma
Joined: 18 Apr 2015 Posts: 178
|
(Separately) Posted: Sat Nov 07, 2015 02:23 Post subject: |
|
|
Flasher wrote: | Статичных безинтервальных диапазонов может быть сколько угодно, верхний лимит ограничит потенциал для создания новых диапазонов. Поэтому интервальное решение куда практичнее и лаконичнее. |
Может быть, но дело в том, что у меня серии файлов обычно идут по 10-20 и по 20-30, большое количество файлов в сериях это уже для меня редкость. Поэтому можно например иметь два скрипты для разных случаев: один с вручну настраиваемыми диапазонами для работы над файлами в папке, серии которых ограничиваются файлами не больше количества 30 штук. Или скрипт может ограничиться сериями с количеством файлов до 30 штук. А дальше после перемещения файлов, дальше работает второй скрипт как обычно, для серий у которых файлы могут идти в количестве в групах больше 30 штук и поэтому скрипт генерирует автоматически новые диапазоны. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Nov 07, 2015 02:37 Post subject: |
|
|
А в чём преимущество у 6-12, 13-20 перед 5-10 и 11-20, скажем?
Просто я хочу реальную пользу в этом увидеть. С общим делителем всегда легче результата добиться.
Оверквотить, повторяюсь, не следует. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Hjkma
Joined: 18 Apr 2015 Posts: 178
|
(Separately) Posted: Sat Nov 07, 2015 02:53 Post subject: |
|
|
Flasher
Например если общий размер файлов зажимает, а есть например старые фотосеты, которые жалко удалить, но можно сократить их количество в разы, так чтобы их осталось 4-5 штук от каждого фотосета. Просто убрав каждые вторые или третьи фотографии, в зависимости от количества файлов. Но такое можно проделать с фотосетами с файлами +10 штук, а вот такое проделать с фотосетами с кол-ством файлов до 10 штук - это значить что возможно есть ситуация когда останется от этой операции 2-3 штук, а хотелось бы сделать так чтобы я мог задавать вручную диапазоны так, чтобы пошагово уполовинывая или утретьивая количество фотографий, в результате осталось 4-5 штук. То есть, если например, оставляя диапазон лишь от 9 до 11, я могу легко сократить количество файлов до 4-5 штук в каждой серии и это бы здорово сэкономило размер. При этом это делается так, чтобы сохранить и начало, середину и конец сюжета фотосета, то есть мне не нужно сохранить первые 4-5 штук фотосета, а все остальное удалить. А это можно добиться если удалять файлы через каждый второй или третий файл, зеброй выделяя файлы и удаляя их. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Nov 07, 2015 03:24 Post subject: |
|
|
Hjkma
Не понял про удаление, если речь о перемещении. Зерба-то выделяет всё подряд, не по группам. Для разбивки интервалы можно сделать с разрывами. Это не устроит? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Hjkma
Joined: 18 Apr 2015 Posts: 178
|
(Separately) Posted: Sat Nov 07, 2015 03:40 Post subject: |
|
|
Flasher
Ну например, я перемещаю все серии, с кол-ством файлами от 9 до 11 в одну папку. Таким образом в папке, собираются все серии с более менее одинаковым количеством файлов в сериях, затем я посторонней программой выделяю зеброй каждые вторые файлы, удаляю их, таким образом получаются все серии, в количеством файлов в группе не более 4-5 штук. Или например мне нужно сделать так чтобы сократить кол-ство файлов в сериях по 20 штук до 4-5. Для этого я собираю их в диапазон от 19 до 21, затем сокращаю их количество в два разы, а потом провожу еще одну операцию сокращения и таким образом получаются серии по 4-5. При этом такое удаление зеброй удобно тем, что сохраняет примерно весь сюжет фотосетов, при это сокращает число файлов в разы. Вот для этого мне было бы удобно, чтобы иметь возможность самому задавать диапазон.
А эту тему первоначально создал просто чтобы можно было бы рассортировать все фотосеты по их количествам и потом удалить самые тяжелые. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Nov 07, 2015 04:04 Post subject: |
|
|
Hjkma
Ясно. Позже тогда посмотрю. Устал. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Hjkma
Joined: 18 Apr 2015 Posts: 178
|
(Separately) Posted: Sat Nov 07, 2015 04:05 Post subject: |
|
|
Flasher
Хорошо, спасибо вам, буду ждать. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Nov 08, 2015 00:15 Post subject: |
|
|
Hjkma
Слил возможности в один скрипт. Можно протестировать.
Code: | '=============================== VBS ===============================
' Рассортировка групп одноимённых до знака "-" или "_" файлов
' из выбранных папок в каталоги, соответствующие числовому диапазону
'
' Параметры: %WL "<путь к целевой папке>"
' Дополнительные параметры: <не/удалять пустые папки: 0/1>
' <числовые диапазоны: MIN-MAX>
' Числовые диапазоны должны быть несмежными и разделяться пробелами.
' Если диапазоны не указаны или группа файлов не вписывается
' и в последний диапазон, то перенос производится в каталоги
' с диапазонами +10 (1-10, 11-20 и т. д.).
' Примеры: %WL "%T" 1 | %WL D:\MyFolder 0 1-5 8-15 19-25
'===================================================================
Option Explicit : Dim Title, List, ODir, Cnt,_
Del, FSO, Dict, ShA, Folder, Filt, Chek, Items
Title = " Перемещение файлов по группам каталогов "
With WScript.Arguments
Cnt = .Count : If Cnt = 0 Then WScript.Quit
If Cnt < 2 Then MsgBox _
"Укажите не менее 2-х параметров!", 4144, Title : WScript.Quit
List = .Item(0) : ODir = .Item(1) : If Cnt > 2 Then Del = .Item(2)
If Cnt > 3 Then Dim P, S, Sp
End With
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Dict = CreateObject("Scripting.Dictionary")
Set ShA = CreateObject("Shell.Application")
Set List = FSO.OpenTextFile(List,,,-1)
Do : Folder = List.ReadLine
If FSO.FolderExists(Folder) Then
Set Folder = ShA.NameSpace(Folder)
Set Items = Folder.Items
Items.Filter 8384, "*_*.*" : Move Items, "_", Chek
Items.Filter 8384, "*-*.*" : Move Items, "-", Chek
If Del Then
Items.Filter 8416, "*"
If Items.Count = 0 Then FSO.GetFolder(Folder.Self.Path).Delete
End if
End If
Loop Until List.AtEndOfStream
If Chek = 1 Then MsgBox "Задание успешно выполнено!", 4160, Title _
Else MsgBox "Файлы с заданным условием отсутствуют!", 4144, Title
Sub Move(Itms, Sym, Chk)
Dim FItems, FN, BN, LN, Ext, F, Nm, Span, OutDir
Set FItems = Folder.Items
For Each FN in Itms
BN = FSO.GetBaseName(FN) : Ext = FSO.GetExtensionName(FN)
LN = Left(BN, InStrRev(BN, Sym)) : F = LN & ":" & Ext
If Not Dict.Exists(F) Then
Dict.Add F, "" : FItems.Filter 8384, LN & "*." & Ext
Nm = FItems.Count : Span = ""
If Cnt > 3 Then
For P = 3 To Cnt - 1
S = WScript.Arguments(P) : Sp = Split(S, "-")
If Nm>=Abs(Sp(0)) And Nm<=Abs(Sp(1)) Then Span=S : Exit For
Next
End If
If Cnt < 4 Or (Cnt > 3 And IsEmpty(Span)) Then
If Nm/10 = Fix(Nm/10) Then Nm = Nm - 1
Span = Int((Nm - 10)/10)*10 + 11 & "-" & Int((Nm + 10)/10)*10
End If
If Span <> "" Then
OutDir = FSO.BuildPath(ODir, "[" & Span & "] файлов в группах")
If Not FSO.FolderExists(OutDir) Then FSO.CreateFolder(OutDir)
ShA.NameSpace(OutDir).MoveHere FItems, 280 : Chk = 1
End If
End If
Next : Dict.RemoveAll
End Sub |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Sun Nov 08, 2015 04:52; edited 1 time in total |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|