Страница 1 из 2

Копирование без вложенных директорий

Добавлено: Чт окт 31, 2013 10:35
suraev
Добрый день.

Поискал в русском и английском сегментах сети, но не могу найти ответ на такой вопрос:

как копировать без вложенных директорий?

Пример

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

-AAAA
       --AAAA1
            aaaa1.txt
       --AAAA2
           aaaa2.txt
       aaaa.txt
Нужно чтобы в итоге скопировалось

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

-AAAA
  aaaa.txt

Добавлено: Чт окт 31, 2013 11:45
MVV
Как вариант, открыть папку, откуда надо копировать структуру, выполнить там поиск на нужную глубину, вывести результаты в панель и, выделив только файлы, скопировать.

Добавлено: Чт окт 31, 2013 12:00
sa
MVV писал(а):скопировать.
Каталоги же (-AAAA) не скопируются? Разве только воспользоваться для копирования CopyTree.

Добавлено: Чт окт 31, 2013 13:06
suraev
В версии 8.5 при копировании есть возможность делать выборку (фильтр), но если указать там, к примеру,

search for: *.txt
search in subdirectories: current dir only

всё равно копируется всё, включая структуру вложенных папок и файлы вложенных папок.

Добавлено спустя 51 минуту:
sa писал(а):
MVV писал(а):скопировать.
Каталоги же (-AAAA) не скопируются? Разве только воспользоваться для копирования CopyTree.
Да, вариант с CopyTree рабочий, спасибо.

Но есть только одно "но" - файлов десятки тысяч, на десятки гигабайт, в итоге через упаковку (даже с "нулевым" сжатием в zip) получается довольно медленно.

Добавлено: Чт окт 31, 2013 13:17
MVV
sa писал(а):Каталоги же (-AAAA) не скопируются? Разве только воспользоваться для копирования CopyTree.
Ну а чем плох вариант с CopyTree?
suraev писал(а):в итоге через упаковку (даже с "нулевым" сжатием в zip) получается довольно медленно.
Зачем же делать через [s]ж[/s] упаковку, если есть CopyTree? :)

Добавлено: Чт окт 31, 2013 14:02
sa
MVV писал(а):Ну а чем плох вариант с CopyTree?
Я говорил, чем плох вариант без CopyTree. :)
suraev писал(а):В версии 8.5 при копировании есть возможность делать выборку (фильтр)
Оказывается, это есть и в гораздо более древних версиях...

Добавлено: Чт окт 31, 2013 14:49
suraev
sa писал(а):Оказывается, это есть и в гораздо более древних версиях...
Я специально сегодня ставил 8.01 и последнюю бету 8.5 - именно в 8.5 появился плюсик справа от поля, где указываются типы (расширения) копируемых файлов. Может и в 8.01 это есть, но не так явно в интерфейсе (а я с TC не слишком опытен, эксплуатирую только самые основные очевидные функции).

Добавлено спустя 15 минут:
MVV писал(а):Зачем же делать через [s]ж[/s] упаковку, если есть CopyTree? :)
Да, это я включил режим "тупняка". Я думал, что диалог, возникающий при ALT-F5 (а там надо выбирать архиватор), это и есть результат работы CopyTree. Теперь уже понял, что плагин проявляется именно в виде дополнительного архиватора в списке архиваторов. Сейчас буду разбираться, как с помощью CopyTree скопировать файлы только определённого типа ("allows to setup include/exclude masks for files to be proccessed"). Но поскольку есть отдельная тема для CopyTree, я свои вопросы направлю туда, если они возникнут.

Спасибо за наводку.

Добавлено: Чт окт 31, 2013 14:50
Avada
sa
suraev
В прежних версиях была возможность выбирать уже существующий шаблон из выпадающего списка, в 8.50 можно также создавать новый шаблон прямо из диалога копирования, а не заранее. (Как раз этот самый плюсик.)
P.S. А вот оверквотинг на форуме наказуем. Лишнее цитирование убрано.

Добавлено: Чт окт 31, 2013 14:57
sa
Для решения задачи можно ещё воспользоваться командой синхронизации каталогов: установить ассиметричный режим, без подкаталогов и без пустых каталогов (исходная панель должна быть слева, а каталоги для копирования должны быть выделены). Вызвать сравнение и затем синхронизировать, исключив из показа файлы, копируемые справа налево.

Добавлено: Чт окт 31, 2013 16:48
MVV
suraev,
Кнопка "+" в диалоге копирования ничем не поможет в поиске файлов через диалог поиска. :) Поэтому искать придётся всё равно поиском.

При копировании через CopyTree можно использовать только маски, без созданных в тотале шаблонов.

sa,
Так же можно только при глубине копирования, равной 1...

Добавлено: Чт окт 31, 2013 16:53
sa
MVV писал(а):Так же можно только при глубине копирования, равной 1...
Другая задача и не ставилась.
suraev писал(а):всё равно копируется всё, включая структуру вложенных папок и файлы вложенных папок.
Похоже, что при копировании по шаблону, TC применяет шаблон только к файлам в каждом отдельно взятом каталоге.

Добавлено: Пт ноя 01, 2013 16:07
sa
Не сразу сообразил, что при использовании CopyTree, нет необходимости в предварительном поиске: достаточно в диалоге упаковки снять галку учёта подкаталогов.

Добавлено: Сб ноя 02, 2013 18:26
Flasher
suraev, vbs:

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

'============================================================
' Копировать выбранные каталоги со всеми файлам без структуры
' Параметры: %WL "<путь получателя>"
' Пример:    %WL "%T"
'============================================================
If WScript.Arguments.Count Then
  List = WScript.Arguments(0) : Path = WScript.Arguments(1)
  If Right(Path, 1) <> "\" Then Path = Path & "\"
  Set FSO = CreateObject("Scripting.FileSystemObject")
  Set SHA = CreateObject("Shell.Application")
  For Each F in Split(FSO.GetFile(List).OpenAsTextStream(1, -1).ReadAll, vbNewLine)
    If FSO.FolderExists(F) Then
      T = Path & FSO.GetFileName(F)
      If Not FSO.FolderExists(T) Then FSO.CreateFolder T
      Set FNew = SHA.NameSpace(T) : Copy F, FNew
      Recursive F, FNew : Set FNew = Nothing
    End If
  Next : Set FSO = Nothing : Set SHA = Nothing : WScript.Quit
End If
Sub Recursive(Fl, FdNew)
  For Each Fd In FSO.GetFolder(Fl).SubFolders
    Copy Fd, FdNew : Recursive Fd, FdNew
  Next
End Sub
Sub Copy(OldF, NewF)
  Set PA = SHA.NameSpace(CStr(OldF)).Items
  PA.Filter 192, "*.*" : NewF.CopyHere PA, 12
End Sub

Добавлено: Пн ноя 04, 2013 09:44
sa
Поиском в выделенном можно найти каталоги с текущим уровнем вложенности, вывести их на панель и добавить (с путями) в список исключений. Останется произвести нужное копирование и затем вернуть первоначальный список исключений. Громоздко, зато не требуются плагины.

Добавлено: Пн ноя 04, 2013 12:02
Flasher
Упс. Я задание не так прочёл. Тут всё гораздо проще:

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

TOTALCMD#BAR#DATA
xcopy
%V\*.* "%T%O\"
wcmicons.dll,50
Копировать папку с файлами, расположенными в её корне

1