Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Объединение выделенных папок в одну папку

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Wed Mar 29, 2017 11:45    Post subject: Объединение выделенных папок в одну папку Reply with quote

Интересует реализация одной цели: чтобы выделенные папки сливались в одну папку на другом панели, название которой будет браться из названиях папок плюс тире между ними. Как это должно выглядеть: есть папки "папка1", "папка2","папка3", после их выделения и запуска скрипта все их содержимое должно перемещаться в одну папку с названием "папка1 - папка2 - папка3", а после этого пустые папки должны удаляться. Если есть файлы с одинаковыми названиями, то лучше переименовать дублирующие названия, добавляя к ними в конце цифры в скобках.
Спасибо.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Mar 29, 2017 14:42    Post subject: Reply with quote

BeardFury78
А почему тут фигурирует другая панель?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Wed Mar 29, 2017 15:29    Post subject: Reply with quote

Flasher
Чтобы можно было в одном месте объединять папки из результатов поиска, которые по отдельности располагаются в других местах дисков. Ну это как вариант.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Mar 29, 2017 18:52    Post subject: Reply with quote

BeardFury78
Вроде того, но особо не тестировал:
Code:
'=============================================================
' Объединение выделенных папок в одну с комбинированным именем
' Параметры: %WL "<путь получателя>" "<разделитель имён>"
' Пример:    %WL "%T" " - "
'=============================================================
With WSH.Arguments
  C = .Count : If C = 0 Then WSH.Quit
  If C <> 3 Then MsgBox "Укажите 3 параметра!", 4144 : WSH.Quit
  List = .Item(0) : Targ = .Item(1) : Delim = .Item(2)
End With : Set ShA = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
With New RegExp
  .Pattern = "(^|\r\n).+[^\\](?=\r\n)" : .Global = True
  List = .Replace(FSO.OpenTextFile(List,,,-1).ReadAll, "")
  List = Left(List, Len(List) - 2)
  If InStr(List, vbNewLine) = 0 Then WSH.Quit
  .MultiLine = True : .Pattern = "\\$"
  Name = .Replace(List, "") : .Pattern = "^.+\\"
  Name = Replace(.Replace(Name, ""), vbNewLine, Delim)
End With : List = Split(List, vbNewLine)
With FSO.GetFolder(List(0)) .Name = Name : Path = .Path End With
Set oPath = ShA.NameSpace(Path) : On Error Resume Next
For i = 1 To Ubound(List)
  Fd = List(i) : Set Items = ShA.NameSpace(Fd).Items
  Items.Filter 73952, "*" : oPath.MoveHere Items, 4120
  Set Fd = FSO.GetFolder(Fd) : If Fd.Size = 0 Then Fd.Delete
Next : If StrComp(Path, FSO.BuildPath(Targ, Name)) Then _
FSO.MoveFolder Path, FSO.BuildPath(Targ, "\")

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Wed Mar 29, 2017 23:18; edited 2 times in total
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Wed Mar 29, 2017 19:00    Post subject: Reply with quote

Flasher
Скрипт работает так как я хотел. Но потом после первого перемещения создается еще один процесс перемещения, на этот раз всех файлов из диска C:\ в папку на другом панеле, приходится прерывать этот процесс.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Mar 29, 2017 20:22    Post subject: Reply with quote

BeardFury78
Нужны все условия воспроизведения.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Wed Mar 29, 2017 20:47    Post subject: Reply with quote

Flasher
Ну как, просто выделяю папки, запускаю скрипт, эти папки успешно объединяются на другом панели, а потом открывается окно перемещения всех файлов из C:\ в ту же самую папку, на котором лежит объединенная папка. Параметры все прописал как в примере. Windows 7 64bit, TC 9.0 64bit.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Mar 29, 2017 20:55    Post subject: Reply with quote

Подозрительно. Интересуют прежде всего пути источника и получателя. Они совпадают что ли?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Wed Mar 29, 2017 21:00    Post subject: Reply with quote

Flasher
Такое поведение наблюдается и когда пути источника и получателя совпадают и когда не совпадают.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Mar 29, 2017 21:19    Post subject: Reply with quote

BeardFury78
Путей так и не увидел.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Wed Mar 29, 2017 21:29    Post subject: Reply with quote

Flasher
Да это могут быть любые пути. Такое поведение идет всегда с самыми разными путями. Ну вот один пример:
Папка источник - e:\Sandbox\, где лежат папки "1","2","3"
Папка получателя - e:\files\, где создается папка "1 - 2 - 3". А потом появляется окошко перемещения всех файлов из C:\, где потом приходится быстро нажимать "отмена", чтобы важные файлы не переместились оттуда. Мне кажется дело в скрипте или в системе. Неплохо было бы, если бы другие люди протестировали бы работу этого скрипта и сказали бы наблюдается ли у них это поведение или нет.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Mar 29, 2017 21:44    Post subject: Reply with quote

BeardFury78 wrote:
Папка источник - e:\Sandbox\
Опа. Если это реальная песочница с включённым сервисом, то там вообще работа таких скриптов бесполезна. Там ничего и перемещаться не должно по идее.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Wed Mar 29, 2017 21:46    Post subject: Reply with quote

Flasher
Нет, перемещение не идет в среде песочниц или виртуальной машины, это обычная папка, создано чисто для эксперимента, поэтому так названо.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Mar 29, 2017 23:14    Post subject: Reply with quote

BeardFury78
Кое-что исправил, но это вряд ли что-то изменит. Не понимаю, что может влиять на подобное. Сам момент появления папки в получателе производится в последнюю очередь. Откуда взяться там ещё чему-то, у меня в голове не укладывается. Confused
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Thu Mar 30, 2017 08:59    Post subject: Reply with quote

Flasher
Вот второй вариант как раз исправил баг с перемещениями файлов из C:\. Уже несколько раз проверял на разных путях, папки успешно объединяются и никакого перемещения файлов из C:\. Спасибо за скрипт!
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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