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

Как скопировать ТОЛЬКО файлы из разных папок в одну?

Добавлено: Вс окт 26, 2008 15:38
artemiysbr
Задача очень проста.
В источнике выделяется энное количество папок, в которых есть файлы.
В получателе открывается другая папка.
Как из выбранных в источнике папок скопировать/переместить только содержащиеся в них файлы, а не сами папки? (тип файлов не имеет значения).
Знаю, можно использовать поиск в выбранных папках. Потом вывести найденный файлы на панель и нажать F6. Это долго!

Можно использовать копирование по маске, но оно же тащит за собой и папки!

Как быть?
Я уже всю голову себе поломал.

Добавлено: Вс окт 26, 2008 16:11
Avada
artemiysbr
Ответ ещё проще. Открыть в исходной панели корневую папку, включающую всё необходимое, перейти в режим показа файлов без подкаталогов (Ctrl+B) - и копировать. Но если в разных исходных подкаталогах есть одноимённые файлы, хорошенький конфликт имён при копировании гарантирован. Внимательно следить за запросами на перезапись!

Добавлено: Вс окт 26, 2008 16:26
artemiysbr
Это понятно.
Я выделяю несколько папок из которых нужно копировать файлы, нажимаю CTRL+B, мне выдается список файлов (без подпапок) той директории, в которой эти папки лежат.
Как можно вывести файлы только из выделенных конкретных каталогов?
Выходит что только через поиск?

Добавлено: Вс окт 26, 2008 16:29
CaptainFlint
artemiysbr
В TC готового решения нет. Более-менее удобные варианты таковы:
1. Создать пустой каталог, в него набросать симлинков на нужные тебе каталоги, после чего можно будет воспользоваться советом Avada. Недостаток: работает только при наличии где-нибудь NTFS-раздела.
2. Выделив нужные папки, жми Alt+F7, делай поиск всех файлов в выделенных папках, выводи результат на файловую панель, после чего Ctrl+A и копируй, куда надо.

Добавлено: Вс окт 26, 2008 16:33
artemiysbr
CaptainFlint писал(а):artemiysbr

2. Выделив нужные папки, жми Alt+F7, делай поиск всех файлов в выделенных папках, выводи результат на файловую панель, после чего Ctrl+A и копируй, куда надо.
Вот так я и делал! Это много времени отнимает.

Добавлено: Вс окт 26, 2008 18:26
Avada
artemiysbr
Идеального решения нет. Но есть и другие способы. Вопрос, уж насколько они покажутся удобными.
1. Всё те же файлы без подкаталогов. Далее отыскивается любой файл, принадлежащий в каталогу, который хочется выделить. (Ориентируемся по строке состояния.) Применяется команда "Выделить все файлы с этим путём". Ищется файл, принадлежащий к другому каталогу... А потом весь этот массив копируется (а можно и по частям). Нудно? Зато без поиска. :)
2. Нужные папки выделяются, после чего выполняется экспресс-архивация в ZIP-архив (да хотя бы на том же диске) с нулевым сжатием со снятой опцией "Сохранять пути". После чего содержимое распаковывается куда надо. По времени вполне приемлемо.

Добавлено: Вс окт 26, 2008 19:47
Avada
Кстати, первый вариант можно существенно ускорить, если потратить две минуты на создание нового пользовательского набора с единственной дополнительной колонкой "Путь" из стандартного плагина tc. Далее применить его в режиме файлов без подкаталогов и отсортировать файлы по этой колонке. А уже потом то, что я написал раньше.

Добавлено: Вс окт 26, 2008 20:03
Tol!k
artemiysbr
Вот тебе, лентяй, кнопка

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\copy_files_only.cmd
%L %T
%COMMANDER_PATH%\WCMICONS.DLL,70
copy files only


-1


--------------------------------------- copy_files_only.cmd ---------------------------------------

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

@echo off
chcp 1251 > nul
if exist %temp%\~copy~files~only~.tmp exit
for /f "delims=" %%a in (%1) do dir /a:-d /b /s "%%a" >> %temp%\~copy~files~only~.tmp
for /f "delims=" %%b in (%temp%\~copy~files~only~.tmp) do copy /b /-y "%%b" "%2"
del %temp%\~copy~files~only~.tmp
через 1000 нажатий твоя бессмертная душа будет принадлежать мне :twisted:

Добавлено: Пн окт 27, 2008 11:27
Batya
artemiysbr
Tol!k писал(а):через 1000 нажатий твоя бессмертная душа будет принадлежать мне
Не продавай свою душу. Используй бесплатный скрипт с параметрами

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

%L "%T" 1
:D

Добавлено: Пн окт 27, 2008 17:30
Моторокер
Я бы сделал так.
Выделенные файлы находятся в правой панели.

1. В левой панели создать папку с именем из восклицательного знака, (чтобы была первой в списке). Важно создать папку на том же диске.
2. Переместить выделенные файлы в папку «!». Именно переместить, т.к. перемещение в пределах одного диска выполняется «моментально», в отличие от копирования
3. Нажать Ctrl+B в папке «!», чтобы увидеть все файлы в подпапках.
4. Переместить/скопировать нужные файлы куда надо.
5. Вернуть содержимое папки «!» на место. Если оно там ещё есть. Или удалить.

Добавлено: Пн окт 27, 2008 18:50
D1P
2Моторокер: это плохой способ. Если изначально файлы требуется скопировать, то перемещение их куда-либо порушит структуру каталогов. Симлинки, предложенные Флинтом, куда как удобнее.

Добавлено: Пт окт 31, 2008 15:03
Моторокер
D1P
На каком этапе структура папок будет нарушена?

Добавлено: Пт окт 31, 2008 16:40
D1P
Моторокер писал(а):На каком этапе структура папок будет нарушена?
На этапе перемещения.

Добавлено: Сб ноя 01, 2008 05:53
Evgeniy
По моему в TC все таки есть готовое решение. Создаем в поиске шаблон "Искать все файлы кроме каталогов", думаю как его создать все знают. Затем выбираем каталоги или файлы которые надо копировать и в диалоге копирования в поле "Только файлы типа" выбираем этот шаблон из списка.

Добавлено: Сб ноя 01, 2008 09:51
Batya
Evgeniy
Повнимательнее прочитайте первый пост. Автор темы хочет не просто копировать только файлы. Он хочет, чтобы команда выполнялась для папок, но при этом в целевую папку копировались вложенные файлы этих папок.