Страница 1 из 2
Копирование без вложенных директорий
Добавлено: Чт окт 31, 2013 10:35
suraev
Добрый день.
Поискал в русском и английском сегментах сети, но не могу найти ответ на такой вопрос:
как копировать без вложенных директорий?
Пример
Код: Выделить всё
-AAAA
--AAAA1
aaaa1.txt
--AAAA2
aaaa2.txt
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