Перемещение файлов вместе с содержимым каталога
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Автоматизация Total Commander

#1: Перемещение файлов вместе с содержимым каталога Author: shveicarLocation: Россия Москва PostPosted: Sat May 05, 2012 19:53
    —
Здравствуйте.
Подскажите, как лучше, осуществить такую задачу?
Существует множество каталогов (более 100) в каждом из них находятся несколько типов файлов:
основные - html, связанные с ними по смыслу- файлы .jpg и видео файлы .flv
В некоторых каталогах,- файлы html - отсутствуют. Моя задача - найти каталоги с полным "комплектом" (наличие в каталоге всех трех типов файлов) и переместить их, вместе со всем содержимым на другую панель.
На данный момент использую такую схему: поиск всех файлов html-> вывод на панель-> создание списка файлов с полными путями -> редактирование текстового файла (до вида- имя\ ), удаление дубликатов строк -> загрузка выделения из этого файла и как результат - перемещение каталогов с html файлами и всем содержимым на другую панель.
Возможно-ли упростить данную схему,- чтобы не прибегать к созданию файла списка?
Например через поиск найти html файлы выделить их и ... скопировать на другую панель все эти файлы со структурой и полным содержимым каждого каталога.
Существующие плагины (например TreeCopyPlus) или скрипты позволяют копировать выделенные файлы со структурой, но без дополнительного содержимого каждого каталога. Пробовал также использовать для этого команду xcopy Но файлы просто исчезали (видимо не правильно задавал параметры).
надеюсь на помощь.
Спасибо.


Last edited by shveicar on Sun May 06, 2012 14:41; edited 1 time in total

#2:  Author: FlasherLocation: Москва PostPosted: Sun May 06, 2012 12:03
    —
Code:
'======================================================================
' Перемещение выделенных папок при условии нахождения в них файлов
' со всеми указанными расширениями
' Параметры: %WL "<путь назначения>" <фильтр расширений через запятую>
' Пример:    %WL "%T" txt,lst,log
'======================================================================
With WScript.Arguments
  C = .Count : If C = 0 Then WScript.Quit
  On Error Resume Next
  List = .Item(0) : Path = .Item(1) : Filt = .Item(2)
  On Error Goto 0
  If C < 3 Then : MsgBox "Укажите 3 параметра!", 4144 : Wscript.Quit : End if
End With : If Right(Path, 1) <> "\" Then Path = Path & "\"
Sp = Split(Filt,",") : Max = Ubound(Sp) + 1
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each F in Split(FSO.GetFile(List).OpenAsTextStream(1, -1).ReadAll, vbNewLine)
  If F > vbNullString Then
    If FSO.FolderExists(F) Then
      With CreateObject("Shell.Application")
        Set P1 = .NameSpace(F).Items
        Set P2 = .NameSpace(Path)
      End With     
      If Len(Filt) > 0 Then
        For Each Fi in Sp
          P1.Filter 96, "*." & Fi : If P1.Count > 0 Then Ch = Ch + 1
        Next
        If Max = Ch Then
          Folder = Path & FSO.GetFileName(F) : P2.MoveHere F, 16
        End If : Ch = 0 : Set P1 = Nothing : Set P2 = Nothing
      End If
    End If
  End If
Next : Set FSO = Nothing : WScript.Quit

#3:  Author: shveicarLocation: Россия Москва PostPosted: Sun May 06, 2012 13:37
    —
Flasher
Отлично, с выделенными каталогами работает, жаль только с рекурсией - нет. Это в принципе не возможно, или сильно усложняет задачу?, иногда удобно через поиск найти нужный тип файлов и сразу выделив их переместить.
В прочем, и в таком варианте, сортировка, сильно упрощается.
Спасибо за помощь.

#4:  Author: FlasherLocation: Москва PostPosted: Sun May 06, 2012 14:03
    —
shveicar wrote:
Это в принципе не возможно, или сильно усложняет задачу?
Через тот метод, который я использую - нет. А так, конечно, можно. Надо бы о таких вещах сразу писать.

#5:  Author: shveicarLocation: Россия Москва PostPosted: Sun May 06, 2012 14:59
    —
Flasher wrote:
Надо бы о таких вещах сразу писать

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

#6:  Author: FlasherLocation: Москва PostPosted: Sun May 06, 2012 15:09
    —
shveicar wrote:
тогда данный скрипт не поможет...
Да я понял. Рекурсия будет чуть позже.

#7:  Author: FlasherLocation: Москва PostPosted: Mon May 07, 2012 20:18
    —
shveicar wrote:
искомые каталоги расположены в разных папках, на разной глубине
Я правильно понимаю, что речь идёт не о родительских каталогах, а обо всех в структуре вне зависимости от их одноимённости?
И если попадается одноимённая, то что с ней делать?:
а) перемещать с переименованием
б) копировать содержимое в уже существующую папку
И как быть, если файлы с указанными расширениями есть не только в корне папки, но и в подкаталогах? Как определять, на каком уровне брать каталог для перемещения? Идём от корня - если нет, переходим к подкаталогу, если в нём есть нужное - копируем его, потом так же с другими?

#8:  Author: shveicarLocation: Россия Москва PostPosted: Mon May 07, 2012 21:57
    —
Flasher
Здравствуйте.
В первую очередь, (если конечно такое возможно) пусть в скрипте будет выбор режима копирование или перемещение.
Flasher wrote:
Я правильно понимаю, что речь идёт не о родительских каталогах, а обо всех в структуре вне зависимости от их одноимённости?
Да, всё верно, - речь идет об рассортировке, естественно, перед применением такого скрипта, - нужно будет произвести предварительную обработку: например с помощью плагина filex, найти файлы с нужным расширением - на нужной глубине вложенности, вынести их на панель и переместить в отдельную папку на против. Если вдруг, при выделение нужного типа файлов, было задействовано, несколько уровней вложенности, и в структуре имеются одноименные каталоги, то в ходе процесса копирования или перемещения, вся цепочка будет пропущена, и в конце действия скрипта (опять же, если это возможно) будет создан текстовой файл с пропущенными цепочками, с полными путями к совпадающим файлам или каталогам. Такой способ, позволит безошибочно рассортировать содержимое.
Quote:
Как определять, на каком уровне брать каталог для перемещения? Идём от корня - если нет, переходим к подкаталогу, если в нём есть нужное - копируем его, потом так же с другими?
Здесь, можно попробовать использовать принцип плагина (TreeCopy) он позволяет регулировать глубину воссоздания структуры,
с помощью чисел с нумерацией от корня.
Если Я вдруг что-то пропустил, заранее извиняюсь.
Спасибо.

#9:  Author: FlasherLocation: Москва PostPosted: Mon May 07, 2012 22:45
    —
shveicar wrote:
найти файлы с нужным расширением - на нужной глубине вложенности, вынести их на панель и переместить в отдельную папку на против
Не понял. Это зачем? Рекурсия тут где тогда?

shveicar wrote:
Если вдруг, при выделение нужного типа файлов, было задействовано, несколько уровней вложенности, и в структуре имеются одноименные каталоги, то в ходе процесса копирования или перемещения, вся цепочка будет пропущена
Мне что, по каждому файлу структуру его род. каталога проверять? Это бессмысленная трата ресурсов. Задача изначально стояла - копировать каталоги со всем содержимым. К чему тут выделение файлов?!?

shveicar wrote:
будет создан текстовой файл с пропущенными цепочками
И что, это лучше чем
Flasher wrote:
а) перемещать с переименованием
б) копировать содержимое в уже существующую папку

shveicar wrote:
с помощью чисел с нумерацией от корня
И какой в этом смысл? Зачем глубину контролировать?

В общем, мне нужно увидеть небольшой пример исходного и конечного дерева какой-то папки.

#10:  Author: shveicarLocation: Россия Москва PostPosted: Tue May 08, 2012 00:25
    —
Вот полная структура главного каталога (вместо файлов естественно пустышки)
Code:
MIME-Version: 1.0
Content-Type: application/octet-stream; name="3.rar"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="3.rar"

UmFyIRoHAG+Xc0AADQAAAAAAAAAaHHQgkEUAAAAAAAAAAAACAAAAAK4CqEAdMCAAIAAAADNc
MTJfbWVzamF0c2V2XDEyX21hc2phdHNldjEuanBnALCarU7osHQgkEQAAAAAAAAAAAACAAAA
AK4CqEAdMB8AIAAAADNcMTJfbWVzamF0c2V2XDEyX21lc2phdHNldi5odG0AsPQPUZpqdCCQ
RAAAAAAAAAAAAAIAAAAArgKoQB0wHwAgAAAAM1wxMl9tZXNqYXRzZXZcMTJfbWVzamF0c2V2
LnN3ZgCwTnJTjnN0IJBGAAAAAAAAAAAAAgAAAACuAqhAHTAhACAAAAAzXDEyX21lc2phdHNl
dlwxMl9tZXNqYXRzZXYwMi5odG0AsAI3WFxHdCCQRgAAAAAAAAAAAAIAAAAArgKoQB0wIQAg
AAAAM1wxMl9tZXNqYXRzZXZcMTJfbWVzamF0c2V2MDIuc3dmALBcmVrIZ3QgkEAAAAAAAAAA
AAACAAAAAK4CqEAdMBsAIAAAADNcMTJfbWVzamF0c2V2XEJlX2hhcHB5Lmh0bQCwtvtcbP10
IJBAAAAAAAAAAAAAAgAAAACuAqhAHTAbACAAAAAzXDEyX21lc2phdHNldlxiZV9oYXBweS5z
d2YAsGrAYUiOdCCQQgAAAAAAAAAAAAIAAAAArgKoQB0wHQAgAAAAM1wxMl9tZXNqYXRzZXZc
SV9saWtlX3lvdS5qcGcAsMQiZB37dCCQOgAAAAAAAAAAAAIAAAAArgKoQB0wFQAgAAAAM1xh
aWJvbGl0XGFpYm9saXQuanBnALAehWaGr3QgkDoAAAAAAAAAAAACAAAAAK4CqEAdMBUAIAAA
ADNcYWlib2xpdFxhaWJvbGl0LnN3ZgCweOdoUbp0IJBNAAAAAAAAAAAAAgAAAACuAqhAHTAo
ACAAAAAzXGFsZW5rX3RzdmV0b2NoZWtcYWxlbmtpX3RzdmV0b2NoZWsuanBnALC+qozFiHQg
kE4AAAAAAAAAAAACAAAAAK4CqEAdMCkAIAAAADNcYWxlbmtfdHN2ZXRvY2hla1xhbGVua2lf
dHN2ZXRvY2hlazIuanBnALAYDY9LqHQgkE4AAAAAAAAAAAACAAAAAK4CqEAdMCkAIAAAADNc
YWxlbmtfdHN2ZXRvY2hla1xhbGVua2lfdHN2ZXRvY2hlazMuanBnALDM0ZNiFXQgkE4AAAAA
AAAAAAACAAAAAK4CqEAdMCkAIAAAADNcYWxlbmtfdHN2ZXRvY2hla1xhbGVua2lfdHN2ZXRv
Y2hlazQuanBnALAmNJacqnQgkF8AAAAAAAAAAAACAAAAAK4CqEAdMDoAIAAAADNcYWxlbmtf
dHN2ZXRvY2hla1xhbGVua190c3ZldG9jaGVrMVxhbGVua2lfdHN2ZXRvY2hlay5qcGcAsCys
bQVtdCCQYAAAAAAAAAAAAAIAAAAArgKoQB0wOwAgAAAAM1xhbGVua190c3ZldG9jaGVrXGFs
ZW5rX3RzdmV0b2NoZWsxXGFsZW5raV90c3ZldG9jaGVrMi5qcGcAsIYOcP2EdCCQYAAAAAAA
AAAAAAIAAAAArgKoQB0wOwAgAAAAM1xhbGVua190c3ZldG9jaGVrXGFsZW5rX3RzdmV0b2No
ZWsxXGFsZW5raV90c3ZldG9jaGVrMy5qcGcAsOBwcscQdCCQYAAAAAAAAAAAAAIAAAAArgKo
QB0wOwAgAAAAM1xhbGVua190c3ZldG9jaGVrXGFsZW5rX3RzdmV0b2NoZWsxXGFsZW5raV90
c3ZldG9jaGVrNC5qcGcAsJQ1d3KGdCCQXwAAAAAAAAAAAAIAAAAArgKoQB0wOgAgAAAAM1xh
bGVua190c3ZldG9jaGVrXGFsZW5rX3RzdmV0b2NoZWsxXGFsZW5rX3RzdmV0b2NoZWsxLmh0
bQCw7pd5+MV0IJBKAAAAAAAAAAAAAgAAAACuAqhAHTAoACAAAAAzXGFsZW5rX3RzdmV0b2No
ZWtcYWxlbmtfdHN2ZXRvY2hlazEuc3dmAMBh+XQgkF8AAAAAAAAAAAACAAAAAK4CqEAdMDoA
IAAAADNcYWxlbmtfdHN2ZXRvY2hla1xhbGVua190c3ZldG9jaGVrM1xhbGVua190c3ZldG9j
aGVrMy5odG0AsEj6e9JndCCQYAAAAAAAAAAAAAIAAAAArgKoQB0wOwAgAAAAM1xhbGVua190
c3ZldG9jaGVrXGFsZW5rX3RzdmV0b2NoZWs0XGFsZW5raV90c3ZldG9jaGVrMi5qcGcAsPy+
gDUTdCCQYAAAAAAAAAAAAAIAAAAArgKoQB0wOwAgAAAAM1xhbGVua190c3ZldG9jaGVrXGFs
ZW5rX3RzdmV0b2NoZWs0XGFsZW5raV90c3ZldG9jaGVrMy5qcGcAsFYhgwDfdCCQYAAAAAAA
AAAAAAIAAAAArgKoQB0wOwAgAAAAM1xhbGVua190c3ZldG9jaGVrXGFsZW5rX3RzdmV0b2No
ZWs0XGFsZW5raV90c3ZldG9jaGVrNC5qcGcAsLCDhX+gdCCQXwAAAAAAAAAAAAIAAAAArgKo
QB0wOgAgAAAAM1xhbGVua190c3ZldG9jaGVrXGFsZW5rX3RzdmV0b2NoZWs0XGFsZW5rX3Rz
dmV0b2NoZWs0Lmh0bQCwZEiKH0p0IJBIAAAAAAAAAAAAAgAAAACuAqhAHTAjACAAAAAzXGFs
ZW51c2hrYV9pdmFudXNoa2FcYWxlbnVzaGthLmpwZwDwWmIClJt0IJBSAAAAAAAAAAAAAgAA
AACuAqhAHTAtACAAAAAzXGFsZW51c2hrYV9pdmFudXNoa2FcYWxlbnVzaGthX2l2YW51c2hr
YS5zd2YA8A4nB+QZdCCQPAAAAAAAAAAAAAIAAAAArgKoQB0wFwAgAAAAM1xCZV9oYXBweVxC
ZV9oYXBweS5odG0A8GiJCYJcdCCQPAAAAAAAAAAAAAIAAAAArgKoQB0wFwAgAAAAM1xCZV9o
YXBweVxiZV9oYXBweS5zd2YA8MLrC5bedCCQPgAAAAAAAAAAAAIAAAAArgKoQB0wGQAgAAAA
M1xCZV9oYXBweVxJX2xpa2VfeW91LmpwZwDwdrAQItN0IJBEAAAAAAAAAAAAAgAAAACuAqhA
HTAfACAAAAAzXGJvYmlrX2JhcmJvc1xib2Jpa19iYXJib3MuaHRtAPDQEhN5fXQgkEQAAAAA
AAAAAAACAAAAAK4CqEAdMB8AIAAAADNcYm9iaWtfYmFyYm9zXGJvYmlrX2JhcmJvcy5qcGcA
8Cp1FcZ8dCCQRAAAAAAAAAAAAAIAAAAArgKoQB0wHwAgAAAAM1xib2Jpa19iYXJib3NcYm9i
aWtfYmFyYm9zLnN3ZgDw3jkaZap0IJAyAAAAAAAAAAAAAgAAAACuAqhAHTANACAAAAAzXGJ1
clxidXIuaHRtAPA4nBzSGnQgkDIAAAAAAAAAAAACAAAAAK4CqEAdMA0AIAAAADNcYnVyXGJ1
ci5qcGcA8JL+HrpEdCCQMgAAAAAAAAAAAAIAAAAArgKoQB0wDQAgAAAAM1xidXJcYnVyLnN3
ZgDwRsMjIH904JBJAAAAAAAAAAAAAgAAAACuAqhAFDAkABAAAAAzXGFsZW5rX3RzdmV0b2No
ZWtcYWxlbmtfdHN2ZXRvY2hlazEAsO6XeT+LdOCQSQAAAAAAAAAAAAIAAAAArgKoQBQwJAAQ
AAAAM1xhbGVua190c3ZldG9jaGVrXGFsZW5rX3RzdmV0b2NoZWszALBI+nuzCnTgkEkAAAAA
AAAAAAACAAAAAK4CqEAUMCQAEAAAADNcYWxlbmtfdHN2ZXRvY2hla1xhbGVua190c3ZldG9j
aGVrNACwZEiKR8N04JAzAAAAAAAAAAAAAgAAAACuAqhAFDAOABAAAAAzXDEyX21lc2phdHNl
dgCwxCJk+qV04JAuAAAAAAAAAAAAAgAAAACuAqhAFDAJABAAAAAzXGFpYm9saXQAsHjnaJSO
dOCQNAAAAAAAAAAAAAIAAAAArgKoQBQwEgAQAAAAM1xhbGVua190c3ZldG9jaGVrAMCQXXTg
kDoAAAAAAAAAAAACAAAAAK4CqEAUMBUAEAAAADNcYWxlbnVzaGthX2l2YW51c2hrYQDwDicH
xiZ04JAvAAAAAAAAAAAAAgAAAACuAqhAFDAKABAAAAAzXEJlX2hhcHB5APB2sBDFpnTgkDMA
AAAAAAAAAAACAAAAAK4CqEAUMA4AEAAAADNcYm9iaWtfYmFyYm9zAPDeORq1unTgkCoAAAAA
AAAAAAACAAAAAK4CqEAUMAUAEAAAADNcYnVyAPBGwyOsKHTgkCYAAAAAAAAAAAACAAAAAK4C
qEAUMAEAEAAAADMA8N45GjpxegDANgAOBAAADgQAAALVfktuAAAAAB0wAgAAAAAAUlJQcm90
ZWN0KwIAAAAHAAAAAAAAALf6xCfcENq3jcKF5WqlCqL3Y33skUmccEQ0OBcNCxsaNx8INt46
MggJJhZaLU8GFTo1+GlzHzmPwGSPVSwdbwQFFFuHfJzCZi8AItXI0+hpcTESX21hQjYAGhal
AeqoHolDfdbxwyuohH4e9QliZXJndX1mDsx1oxr3ssXvPXlsNxsQRYRhRFzfQ3cjnJsUrEoJ
HB8FOlREMD1RdMAzmzJXQ1iqsAwDTbP5CnXgpjUApFNcQmVfamFwcHuCatwts2z5YXSmc3Ez
3F1sVgEGD15sE+ZazTS3KMfiaDgnMxksPhICFiJHD35NZf6e9yd+snxCB4VFBi9a7Mo3f5vx
x2HmuXQ+cuYy2iBVILBgAAAxXDEyX8Nn2Sp8RGrLVPRxL1wKJzY1CRUwSW4AHh9vQnIWmR4s
QhFFYSzM1xrVfkmMAFPmIXZvY2hlxTP0IXNVT2tJ8XbbBSR1QjwlABhefEJhbRSFzlhKfpFl
JYJ3EQoUWVlxERYUYN8vtzISCNyQXWIpeV10IJB3XGFuZW5rX9px3CVpX3jGR8McfG8mX3kA
GRY2U3d0cmR4aBFYTGZrbUdENXlrYyu9tOFbaL90IpRKAEDE4mw+uQAAAg4AAACuAqhAHTAb
ACAAAAAzXDEyX1plc2phdHNldV9lYl9od2J0fjVvSGwKuV/KUk+BbR2LQlgWAwljmLtSK0nZ
A0aQXGNRND2gQgAgAAIAM1wxnF/FJW5awnb7JWtsQAMuHBk5DlB8NyNwdjiE+y5bwmjsPNXJ
ZmFsZW5rX3RzdGd0b2PGycHbAUxRcE5LX3RAGVtgdF1lfHBpGHl6D59O35Dv/GMzsBJ+hWaG
r3QgkDoCAgAAAK6squhfLT07II4CqHNyDgEeGQweLWlcYGoW8EnCMhdCfO6aSwIrWgABA3Tf
G40NOo4o7/6ALn9Ze3RjdmV0Xj8JCQ7yR51ECUb9iPHjXXYsIJBgAAAAAAAAAAAAAgAAAADD
Y3TL5CJt1CCT5ixHMwIEAAVFNQQWdtXKxUGvRV9owQZlfmtfdEAqBBgIDQM6H+korFgXPSoM
FCgSGjNGZVB5eHYJLnZlahG0BklWI3lu//96i/kWdHN2ZXRvYWhlaTKAaNiJHyhjGZ9vqGQT
zC9fOQ8HOhoYKREFGQYcCqY2rEckPy46OhgpETRFZ3BvZjdmfisTu3tOtlvVadmFMAYGDgJr
WhkGAnbf0+vgupHyCvQIDrDc0ZNiJigRoBFtZXPEY9wzeEY4sOQiZFSUgMHhe0drf3RzdlYo
Dg0NCwADux27SwsAHhsDDigOPFFqaT9seXZnC69I8HOHgDShmSwCa4QIXOLxqsRG2NUfStoi
OAgUMBICEAAAAJ1cySx4Xv9d/DNrVWQzIgQABcQ9ewBABwA=

#11:  Author: FlasherLocation: Москва PostPosted: Tue May 08, 2012 01:08
    —
Гмм.. Я же просил не только исходный, но и конечный вариант деревьев. Т.е.

было:
Code:
Родитель >
   Папка 1 >
     *.htm
     *.swf
     *.jpg
     папка 2 >
        *.htm
        *.swf
        папка 1 >
           x*.htm
           x*.swf
           x*.jpg       
     папка 3 >
        *.htm
        *.swf
        *.jpg


cтало:
Code:
Получатель >
   Папка 1 >
      *.htm
      *.swf
      *.jpg
      x*.htm
      x*.swf
      x*.jpg       
   папка 3 >
      *.htm
      *.swf
      *.jpg


Мне нужно прояснить, что делать с корневыми файлами, что делать с одноимёнками в конечном счёте.
На видео тоже неясно. Тут написано про включение всего содержимого (т.е. с подкаталогами), а там приводится пример только с файлами.

#12:  Author: shveicarLocation: Россия Москва PostPosted: Tue May 08, 2012 01:46
    —
Flasher
Да, Я понял, что проблема возникнет при наличии .htm файлов в промежуточных каталогах, в которых также есть вложенные структуры с .htm файлами.
На самом деле, Я и упоминал про поиск с определенной глубиной вложенности, именно из за этого. Специально воспроизвел такой пример, и TreeCopy выдал сообщение с вопросом что делать, переименовать или не копировать. Поэтому лучше, пропустить копирование (перемещение) такой структуры, что бы избежать путаницы.
Главное, чтобы, информация о пропуске, где то фиксировалась.
Данный скрипт (если он конечно будет создан) - может быть применен, в самом начале обработки информации, и если есть совпадения, - то они могут быть обработаны после этого, в ручном или полуавтоматическом режиме после проверки. Такой принцип, позволит сильно сэкономить время.
Возможно Я изначально, не правильно упомянул термин "рекурсия", поскольку основной задачей, является - отделение каталогов, с полным "комплектом файлов", без вложенных подкаталогов. А изначально, созданный выше скрипт, не позволяет автоматически перенести папку с "комплектом файлов" если она вложена в подкаталог.

#13:  Author: FlasherLocation: Москва PostPosted: Tue May 08, 2012 13:17
    —
shveicar wrote:
Я понял, что проблема возникнет при наличии .htm файлов
А какая разница html-файлы это или swf/jpg, если нужно перемещать при наличии всех трёх?

shveicar wrote:
Поэтому лучше, пропустить копирование (перемещение) такой структуры, что бы избежать путаницы.
Я предложил переименовывать. Это разве не помогает избежать путаницы?

shveicar wrote:
то они могут быть обработаны после этого, в ручном или полуавтоматическом режиме
И что с ними будет происходить такого, что нельзя сделать в автоматическом режиме?

shveicar wrote:
с полным "комплектом файлов", без вложенных подкаталогов
Т.е. каждый подкаталог на любой глубине идёт как отдельная папка?
Например, была такая структура:
1. "Мои документы" (3 расш.) > 2. "Мои документы 1" (2 расш.) > 3. "Мои документы 2" (3 расш.) > 4. "Мои документы" (3 расш.) > 5. "Мои документы" (3 расш.)
Курсор на папке 1. , ест-нно. Выполняем. Получается:
1. "Мои документы" (3 расш.)
3. "Мои документы 2" (3 расш.)
4. "Мои документы (1)" (3 расш.)
5. "Мои документы (2)" (3 расш.)
Так Question

P.S. С запятыми полегче. А то скоро, чую, они будут после каждого слова. Mr. Green

#14:  Author: shveicarLocation: Россия Москва PostPosted: Tue May 08, 2012 15:13
    —
Flasher wrote:
А какая разница html-файлы это или swf/jpg, если нужно перемещать при наличии всех трёх?

Подразумевал, что поиск начинается с файлов .htm
Quote:
Я предложил переименовывать. Это разве не помогает избежать путаницы?
Да пусть будет так, главное, чтоб имя было уникальное, например _bak
Quote:
И что с ними будет происходить такого, что нельзя сделать в автоматическом режиме?

Может произойти нарушение смысловой связи с другими файлами, если многие имена интернет файлов будут иметь значение index.htm и отличить их "на вскидку" будет невозможно.

Quote:
Т.е. каждый подкаталог на любой глубине идёт как отдельная папка?

Это, тоже удобный вариант, естественно при этом, произойдет нарушение общей структуры, но для детальной проработки может понадобиться.
Quote:
Например, была такая структура: ....Выполняем. Получается:

1. "Мои документы" (3 расш.)
3. "Мои документы 2" (2 расш.) оставить на месте или переименовать при (копировании/перемещении)
4. "Мои документы (1)" (3 расш.)
5. "Мои документы (2)" (3 расш.)
Всё так, но только если в "Мои документы" есть файлы htm(html)
P.s Смысл всех этих манипуляций в том, чтобы в оставшиеся папки, (в которых нет htm файлов) поместить htm шаблоны, в каждом случае со своим содержимым, для получения взаимосвязи с остальными файлами jpg и .swf.
Спасибо.

#15:  Author: FlasherLocation: Москва PostPosted: Tue May 08, 2012 15:38
    —
shveicar wrote:
Подразумевал, что поиск начинается с файлов .htm
Какая разница с чего начинать, если нужны все типы?

shveicar wrote:
Да пусть будет так, главное, чтоб имя было уникальное, например _bak
А счётчик чем плох?

shveicar wrote:
Может произойти нарушение смысловой связи с другими файлами
При автоматическом переименовании папок? Да ну?

shveicar wrote:
Это, тоже удобный вариант, естественно при этом, произойдет нарушение общей структуры, но для детальной проработки может понадобиться.
Меня сейчас интересует вариант, который нужен. Если не разбивать подкаталоги по критерию наличия в их корнях всех указанных типов, то тогда будут возникать дубливаты по структуре.
Было:
Папка 1 > Папка 2
Стало:
Папка 1
Папка 2
Папка 1 > Папка 2
Т.е. уже 2 дубликата. Зачем они?

shveicar wrote:
3. "Мои документы 2" (2 расш.) оставить на месте или переименовать при (копировании/перемещении)
Это тут к чему? У меня написано
Flasher wrote:
3. "Мои документы 2" (3 расш.)

shveicar wrote:
Всё так, но только если в "Мои документы" есть файлы htm(html)
Да проверка-то идёт по наличию всех расширений. При чём тут именно html, не пойму?

shveicar wrote:
Смысл всех этих манипуляций в том, чтобы в оставшиеся папки, (в которых нет htm файлов) поместить htm шаблоны
Shocked А почему тогда сразу не помещать в такие папки html-шаблоны?

#16:  Author: shveicarLocation: Россия Москва PostPosted: Tue May 08, 2012 16:56
    —
Flasher wrote:
Какая разница с чего начинать, если нужны все типы?
Все типы файлов которые по смыслу могут быть связаны с htm(html) файлами: например gif, png, css и другие. Мне кажется, что создавать скрипт ради одноразовой, - конкретной задачи, не имеет смысла, поэтому Я и пытаюсь объяснить, что ситуация с пропущенными htm(html) файлами, возникает довольно часто, мой случай лишь разовый пример, и если речь идет о создании "универсального инструмента" - ориентироваться нужно на файлы htm(html) типов.
Quote:
А счётчик чем плох?

А если имена в начале каталогов имеют цифровое обозначение? например 1_11..[a-z],11_2..[a-z] то как они будут выглядеть?
Quote:
При автоматическом переименовании папок? Да ну?

Если брать простой пример, - все нужные файлы лежат в одном катологе, - то, да , согласен. А если есть взаимосвязь с корневой папкой, например таблица стилей
Code:
../../../style.css
или связь с другим контентом, в аналогичном виде? Поэтому, Я и упоминаю что прежде, чем использовать автоматический режим, нужно все проверить, и иногда скопировать вручную.
Quote:
Если не разбивать подкаталоги по критерию наличия в их корнях всех указанных типов, то тогда будут возникать дубликаты по структуре...Т.е. уже 2 дубликата. Зачем они?

Именно, из за возможности взаимосвязи между уровнями, как Я уже упомянул, в таблицах стилей, и других файлов. При таком варианте, сразу будет видно, есть связь или нет. Поясню: достаточно открыть файл htm, например в каталоге "Папка 2"и посмотреть, - если вид документа изменен, значит есть взаимосвязь с каталогом "Папка 1" или более верхними каталогами.
Quote:
Это тут к чему? У меня написано 3. "Мои документы 2" (3 расш.)
Так ведь здесь в начальном варианте указанно (2 расш.)
Quote:
Например, была такая структура:
1. "Мои документы" (3 расш.) > 2. "Мои документы 1" (2 расш.) > 3. "Мои документы 2" (3 расш.) > 4. "Мои документы" (3 расш.) > 5. "Мои документы" (3 расш.)

Поэтому, Я подумал, что после срабатывания скрипта 2 изменилось на 3, другими словами, в каталоге "Мои документы 1" - появилось еще одно непонятное расширение, (возможно это опечатка?)
Quote:
А почему тогда сразу не помещать в такие папки html-шаблоны?
Можно и так, но для этого, нужно быть провидцем, - знать что отсутствуют совпадающие имена (htm) файлов, видеть всю структурную взаимосвязь файлов между собой, и иметь в наличии "супер скрипт" корректирующий содержание каждого htm шаблона, перед его размещением в соответствующие каталоги. К сожалению, Я таким "инструментом" не располагаю, поэтому пользуюсь таким способом.

#17:  Author: FlasherLocation: Москва PostPosted: Tue May 08, 2012 17:21
    —
shveicar wrote:
если речь идет о создании "универсального инструмента" - ориентироваться нужно на файлы htm(html) типов
"Чем дальше в лес, тем больше дров." Я прежде всего ориентировался по этим словам:
shveicar wrote:
Моя задача - найти каталоги с полным "комплектом" (наличие в каталоге всех трех типов файлов)
Теперь всё изменилось?

shveicar wrote:
А если имена в начале каталогов имеют цифровое обозначение? например 1_11..[a-z],11_2..[a-z] то как они будут выглядеть?
Смотря как задавать счётчик. Берём привычное переименование со скобками "Имя (№)". Зависимость "_№" тут отсутсвует, т.е. счётчик будет добавляться к новым именам.

shveicar wrote:
Если брать простой пример, - все нужные файлы лежат в одном катологе, - то, да
С чего бы только простой? Берётся каталог на любом уровне и при наличии одноимённого в получателе перемещается с переименованием.

shveicar wrote:
Именно, из за возможности взаимосвязи между уровнями
Из-за чего это происходит меня не волнует. Мне нужно узнать, что делать в итоге - и только. Разбивать или дублировать?

shveicar wrote:
Так ведь здесь в начальном варианте указанно (2 расш.)
Это указано для Мои документы 1, а не 2. См. внимательней.
shveicar wrote:
возможно это опечатка?
В моём случае опечаток нет. 2-я папка пропускается при 2-х расширениях, в то время как необходимы 3.

shveicar wrote:
Можно и так, но для этого, нужно быть провидцем, - знать что отсутствуют совпадающие имена (htm) файлов, видеть всю структурную взаимосвязь файлов между собой, и иметь в наличии "супер скрипт" корректирующий содержание каждого htm шаблона, перед его размещением в соответствующие каталоги.
Бывают ситуации, когда такой "супер скрипт" проще изготовить, чем промежуточный, не говоря о том, что это даёт конечных результат, что упрощает вопрошающему задачу. Провидцем быть не надо, Имена легко запомнить в коллекции. Правка шаблона может оказаться легче, чем до сих пор неясная рассортировка каталогов. Я предлагаю расписать в новой теме задачу, а там я уже решу, что легче.

#18:  Author: shveicarLocation: Россия Москва PostPosted: Tue May 08, 2012 18:43
    —
Flasher wrote:
Теперь всё изменилось?

Нет, просто проблема развернута глубже, - найти каталоги с полным "комплектом" (наличие в каталоге всех типов файлов при условии нахождения в них файлов htm,html) и переместить/копировать их, вместе со всем содержимым на другую панель.
Quote:
Смотря как задавать счётчик

Если имена будут выглядеть так 1_11..[a-z](1).расширение - то нормально.
Quote:
Разбивать или дублировать?

Пусть будет разбивка.
Quote:
Правка шаблона может оказаться легче, чем до сих пор неясная рассортировка каталогов
Даже если предположить, что возможно создать скрипт, - для замены блоков текста в тегах,(с поддержкой регулярных выражений) в каждом из перечисленных в файле списке имен, и блоки текста будут браться из отдельного текстового файла. Всё равно, придется изначально обнаружить каталоги, - где они (htm файлы) отсутствуют. Отдельным скриптом, - воссоздать в них файлы пустышки, с именами родительских каталогов, загнать их имена - в файл список для первого скрипта, и только затем, - раскидать модифицированные htm(html) шаблоны с заменой файлов пустышек. (это всего лишь, один из возможных вариантов).
Об этом, Я не могу просить, поскольку, некоторые задания (скрипт для замены блоков текста), не имеют прямого отношения к total commander...

#19:  Author: FlasherLocation: Москва PostPosted: Tue May 08, 2012 19:01
    —
shveicar wrote:
Нет, просто проблема развернута глубже, - найти каталоги с полным "комплектом" (наличие в каталоге всех типов файлов при условии нахождения в них файлов htm,html) и переместить/копировать их, вместе со всем содержимым на другую панель.
Брррр... Если речь идёт о полном комплекте, то и так понятно, что html там фигурируют. Отсутствие любого из расширений уже исключает обработку. И не со всем содержимым, а только с файлами из корней. Или опять всё поменялось?


shveicar wrote:
сё равно, придется изначально обнаружить каталоги, - где они (htm файлы) отсутствуют.
И что? С этим никогда проблем не было.
shveicar wrote:
Отдельным скриптом, - воссоздать в них файлы пустышки
Зачем отдельным? Confused
shveicar wrote:
Об этом, Я не могу просить, поскольку, некоторые задания (скрипт для замены блоков текста), не имеют прямого отношения к total commander...
Обработка выделенных элементов - уже по сути касается файлового менеджера. А что будет в скрипте делаться дополнительно - дело третье.

#20:  Author: shveicarLocation: Россия Москва PostPosted: Tue May 08, 2012 19:58
    —
Flasher wrote:
Отсутствие любого из расширений уже исключает обработку. И не со всем содержимым, а только с файлами из корней. Или опять всё поменялось?

Все правильно, больше ничего меняться не будет.
Извиняюсь, за неточную формулировку.
С остальными вариантами, относящимися к созданию дополнительных скриптов, нужно будет еще раз все продумать.
Спасибо за помощь.

#21:  Author: FlasherLocation: Москва PostPosted: Tue May 08, 2012 20:02
    —
shveicar wrote:
С остальными вариантами, относящимися к созданию дополнительных скриптов, нужно будет еще раз все продумать.
Только не скриптов, а скрипта. Жду тогда формулировки. А там решим.

#22:  Author: l-Roon PostPosted: Fri Dec 27, 2013 17:31
    —
В общем каталоге 'Музыка' имеется несколько (несколько сотен) папок, каждая из которых содержит ряд аудио-файлов. В одной папке могут быть ogg, в другой mp3, в третьей flac, в чётвертой ape и т.д. Но в каждой из папок содержатся аудио-файлы только одного формата. Кроме этих файлов каждая папка содержит информацию об альбоме в виде файлов txt, doc, jpeg, pdf.
Вопрос: возможно ли задать условия перемещения таким образом, чтобы папки с mp3 (например) перемещались в общий каталог 'MP3' целиком, то есть, со всем содержимым (как с собственно музыкой, так и с дополнителными файлами)?

#23:  Author: FlasherLocation: Москва PostPosted: Fri Dec 27, 2013 19:44
    —
l-Roon wrote:
возможно ли задать условия перемещения таким образом ...
Конечно, возможно. Достаточно в каждой папке проверять число отфильтрованных по расширению файлов, если их больше 1, то перемещать в папку с именем найденного расширения.

#24:  Author: l-Roon PostPosted: Sat Dec 28, 2013 01:54
    —
Flasher, а Вы не могли бы подсказать -- как именно это сделать?

Upd: вопрос снят, на другом сайте подсказали готовый скрипт:

Code:
@ECHO OFF
SET R="0"
FOR /R %%A IN ("*.mp3") DO (
call :1 "%%~dpA"
)
goto :eof
:1
SET R=%1
move /Y "%R:~1,-2%" "d:\music\mp3"

#25:  Author: Tol!kLocation: Арзамас PostPosted: Sat Dec 28, 2013 19:32
    —
Code:
@echo off &setlocal enableextensions
::   http://forum.wincmd.ru/viewtopic.php?p=104462#104462
::   Параметры:   "%WL"
set Ext=MP3 OGG FLAC APE AAC M4A WMA

for /f "delims=" %%d in ('type "%~1"') do call :E "%%d"
goto :eof

:E
title %1
pushd %1
for %%e in (%Ext%) do (
   for /f "delims=" %%f in ('dir /b/a-d *.%%e 2^>nul') do (
      cd .. &md %%e 2>nul
      move /y "%~1." %%e &&goto :eof
   )
)
goto :eof

#26:  Author: AmeKs PostPosted: Sat May 14, 2016 16:36
    —
А можно как-то осуществлять следующую операцию? При перемещении папки/файла проверяется, есть ли одноименный файл с разрешением inf в каталоге, где находится наша папка/файл -> если есть, то перемещать и его тоже.
Например, перемещаем файл abc.exe
если в каталоге есть abc.inf, то перемещаем и его тоже.

#27:  Author: FlasherLocation: Москва PostPosted: Mon May 16, 2016 17:11
    —
AmeKs >>>
Code:
'================================= VBS ==================================
' Перемещение выбранных файлов совместно с находящимися в том же каталоге
' и имеющими одно базовое имя в соответствии с заданной маской расширений
'
' Условие:   путь запуска - пустой
'
' Параметры: %WL "<путь назначения>" <маска расширений>
' Пример:    %WL "%T" *.inf;*.ini
'========================================================================
With WScript.Arguments
  If .Count = 0 Then WScript.Quit
  List = .Item(0) : Path = .Item(1) : Exts = .Item(2)
End With : Set FSO = CreateObject("Scripting.FileSystemObject")
Set Shell = CreateObject("Shell.Application")
Set Items = Shell.NameSpace(FSO.GetAbsolutePathName("")).Items

Set Path = Shell.NameSpace(Path)
With FSO.OpenTextFile(List,,,-1)
  Do : F = Trim(.ReadLine)
    Items.Filter 73952, FSO.GetFileName(F) & ";" &_
    Replace(Exts,  "*", FSO.GetBaseName(F))
    Path.MoveHere Items, 8
  Loop Until .AtEndOfStream : .Close
End With


Last edited by Flasher on Fri May 20, 2016 10:24; edited 2 times in total

#28:  Author: AmeKs PostPosted: Mon May 16, 2016 21:48
    —
Flasher Спасибо большое, работает. Но хотелось бы, чтобы в случае отсутствия одноименного файла, наш исходный файл перемещался. А при нынешнем раскладе ничего не происходит. Буду очень признателен, если скрипт будет работать аналогично и для папок.
Впринципе, моя цель - хранить некоторые комментарии вместо файла descript.ion в отдельных файлах, которые бы перемещались при перемещении файлов/каталогов. Как-то так. Confused

#29:  Author: FlasherLocation: Москва PostPosted: Tue May 17, 2016 00:33
    —
AmeKs wrote:
Буду очень признателен, если скрипт будет работать аналогично и для папок.
Так в папках, как правило, расширения не задаются. Question Ладно, сделал. Но проблемой будет то, что все выбранные папки, где в имени есть точка, будут также перемещены.
AmeKs wrote:
вместо файла descript.ion
Из-за Юникода, поди?

#30:  Author: sa PostPosted: Thu May 19, 2016 15:12
    —
Flasher wrote:
Но проблемой будет то, что все выбранные папки, где в имени есть точка, будут также перемещены.

Из-за этого обстоятельства не хотелось бы делать исключение. Пусть перемещаются, коли выбраны!

#31:  Author: FlasherLocation: Москва PostPosted: Thu May 19, 2016 15:16
    —
sa
Никак в представители AmeKs-а завербовали? Very Happy

#32:  Author: AvadaLocation: Россия, Саратов PostPosted: Wed Aug 08, 2018 21:05
    —
Чиполлино
Сообщение удалено. За такой откровенный оффтоп никакие извинения быть приняты не могут. Подробности в ЛС.



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group