[WCX] CopyTree - копирование с сохранением структуры

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

ingerard
Сообщения: 128
Зарегистрирован: Вс дек 04, 2016 21:51

Сообщение ingerard »

sa
Мне глубину менять приходится редко, я прописал в настройках какая мне надо и все.

p.s. только что попробовал нажать S+F5 и сразу же Win, и окно с выбором глубины появилось, без сложностей сразу срабатывает, так что вариант с выбором есть. :D
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

ingerard писал(а):попробовал нажать S+F5 и сразу же Win
Тоже вариант!
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

ingerard,
А копирование откуда делается? Если из панели результатов поиска, то диалог в любом случае будет показан, т.к. там неизвестна папка, от которой уровни отсчитывать, в отличие от копирования из плоского режима, где папка известна. В Readme об этом сказано:
Readme.txt писал(а):При копировании из панели результатов поиска (если не задан параметр DefaultCopyLevel) диалог показывается всегда, в остальных случаях - в зависимости от настроек модуля.
ingerard
Сообщения: 128
Зарегистрирован: Вс дек 04, 2016 21:51

Сообщение ingerard »

MVV
Да без всяких режимов только что попробовал, отключил в настройках CopyTree окно выбора глубины через Win, вызываю архивацию через Alt+F5, зажимаю кнопку Win и окно все равно выскакивает.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

У меня ничего не выскакивает: выделяю файл в обычной панели, жму Alt+F5, жму ОК - файл молча скопирован. В настройках три верхних галки точно сняты?
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

MVV писал(а):жму ОК
Речь о случае, когда помимо OK нажата клавиша Win. Как здесь.
Последний раз редактировалось sa Чт дек 07, 2017 10:33, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Было бы странно, если бы он этого не знал, коли о баге в данном контексте и сообщалось.

ingerard
Вообще я изначально предполагал, что окно глубины таки требуется, иначе можно было бы сразу говорить о чём-то вроде этого:
[cut]

Код: Выделить всё

'••••••••••••••••••••••••••••••••• VBS •••••••••••••••••••••••••••••••••
' Копирование/перемещение по указанному пути выбранных в активной панели
' объектов (с сохранением относительных путей в режиме без подкаталогов)

' Параметры: %WL "%P" "<путь получателя>" <copy/move>

' Ключи:
' /с:[+/-]<число> — контроль глубины вложенности выбранных объектов
'   a) Если перед числом +, добавляются папки справа пути источника.
'   б) Если перед числом -, папки исключается слева относител. пути.
'   в) Если знака нет, папки исключаются слева общего пути источника.
' /s:<секунд> — минимальное число секунд для оповещения об окончании
' /d — удалять опустевшие после перемещения файлов каталоги 

' Примеры:   %WL "%P" "%T" copy /c:2 /d
'            %WL "%P" D:\NewFolder copy /s:20
'            %WL "%P" "С:\New Folder" move /s:20 /с:-3
'••••••••••••••••••••••••••••••••••••••••••••••••• Автор: Flasher © ••••

Option Explicit : Dim T : T = Timer
Dim Lst, IPath, OPath, Act, C, S, D, Ln, Disk, Del, RExp, Max, Min
Dim RPath, Del2, TF, F, PF, Fd,  FN, BN, Ext, i, TFile, FType, Sec

With WSH.Arguments
  If .Count = 0 Then WSH.Quit: End If : Lst = .Item(0)
  IPath = .Item(1) : OPath = .Item(2) : Act = .Item(3)
  D = Eval(LCase(Act) = "move" And .Named.Exists("d"))
  C = .Named("c") : S = .Named("s")
End With

With CreateObject("Scripting.FileSystemObject")
  If Not (.FolderExists(IPath) Or .FolderExists(OPath)) Or (C = "" And _
  StrComp(.BuildPath(IPath,"\"), .BuildPath(OPath,"\"), 1) = 0) Then WSH.Quit
  Set Disk = CreateObject("Shell.Application").NameSpace(Left(OPath, 2))
  If C = "0" Then OPath = .BuildPath(OPath, Replace(IPath, ":", ""))
  If StrComp(Left(IPath, 1), Left(OPath, 1), 1) <> 0 Then _
  If LCase(Act) = "move" Then Act = "Copy" : Del = " : .Delete"
  Set RExp = New RegExp : Ln = Len(IPath)
  If Right(IPath, 1) = "\" Then Max = 1 Else Ln = Ln + 1
  If C > 0 And IsNumeric(C) Then
    Max = UBound(Split(IPath, "\")) - Max + 1
    If CInt(C) > Max Then
      If Left(C, 1) = "+" Then C = Max Else C = 0
    ElseIf Left(C, 1) <> "+" Then C = Max - C End If
    RExp.Pattern = "((\\[^\\]+){" & CInt(C) & "})\\?$"
    OPath = .BuildPath(OPath, Replace(RExp.Execute(_
            "\" & IPath)(0).SubMatches(0), ":", ""))
  End If : Set TF = .OpenTextFile(Lst,,,-1)
  Do : F = TF.ReadLine : PF = .GetParentFolderName(F)
    If Right(F, 1) = "\" Then F = Left(F, Len(F) - 1)
    RPath = Mid(PF, Ln) : Del2 = ""
    If C < 0 Then
      Max = UBound(Split(RPath, "\")) + 1 : Min = Abs(C)
      If Min > Max Then Min = 0 Else Min = Max - Min
      RExp.Pattern = "(\\[^\\]+){" & Min & "}$"
      RPath = RExp.Execute(RPath)(0)
    End If
    If IPath = "" Then Fd = OPath Else _
    Fd = .BuildPath(OPath, RPath) : Disk.NewFolder Mid(Fd, 4)
    FN = .GetFileName(F) : BN = .GetBaseName(F) : i = 0
    Ext = .GetExtensionName(F) : If Len(Ext) Then Ext = "." & Ext
    While .FileExists(Fd & "\" & FN) Or .FolderExists(Fd & "\" & FN)
      i = i + 1 : FN = BN & " (" & i & ")" & Ext
    Wend : If .FileExists(F) Then FType = "File" Else FType = "Folder"
    If Len(Del) Then Del2 = FType & " F, 1"
    Execute "." & Act & FType & " F, Fd & ""\"" & FN" & Del & Del2
    If D And Right(PF, 1) <> "\" Then
      Do : If .GetFolder(PF).Size = 0 Then .DeleteFolder PF, 1
        PF = .GetParentFolderName(PF)
      Loop Until IPath = .BuildPath(PF, "\")
    End If
  Loop Until TF.AtEndOfStream : TF.Close
End With : CreateObject("WScript.Shell").SendKeys "^r"
Sec = Timer - T

If S > 0 And CSng(S) <= Sec Then
  If Sec < 60 Then Sec = 1.4 Else Sec = ""
  If LCase(Act) = "copy" Then Act = " " &_
  "Копирование " Else Act = " Перемещение "
  CreateObject("WScript.Shell").Popup Space(7) &_
  "Выполнено!", Sec, Act & "выбранного      ", 4160
End If
[/cut]
Последний раз редактировалось Flasher Чт дек 14, 2017 13:47, всего редактировалось 14 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

sa писал(а):
MVV писал(а):жму ОК
Речь о случае, когда помимо OK нажата клавиша Win. Как здесь.
А, блин, только сейчас понял, в чём проблема, никто толком и не объяснил, что для воспроизведения бага кнопка Win обязательна. Да, подтверждаю, что диалог показывается с Win, даже если опция отключена.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):никто толком и не объяснил, что для воспроизведения бага кнопка Win обязательна
Шутишь? А я с каким ключём к тебе обратился? И далее писал:
Flasher писал(а):При удержании Win диалог выбора всё равно появляется.
+ См. самый верх предыдущей страницы.
Последний раз редактировалось Flasher Чт дек 07, 2017 12:16, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

У тебя на скриншоте стояла галка "Показывать диалог каждый раз", я подумал, что проблема в этом.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

И я на это ответил.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Спорить не о чем: описание бага можно использовать как образец. :)
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Поправил косяк с опцией, также убрал пустой элемент в списке при копировании каталога, и подкорректировал подсчёт уровней в разных случаях.

CopyTree 1.3.0.320

sa писал(а):Спорить не о чем: описание бага можно использовать как образец. :)
По-любому! :lol:
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Теперь всё ОК.
Ты бы ещё тут хоть "полслова" написал.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

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