Как переместить дерево файлов +выфильтровать опр.расширения?

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
User avatar
zencd
Posts: 74
Joined: Wed 07 Sep, 2005 13:09
Location: spb

Как переместить дерево файлов +выфильтровать опр.расширения?

Post by zencd »

Хочу переместить (F6) дерево файлов с сохранением структуры директорий, но файлы с некоторым расширением не перемещать. То есть по окончании операции должно получиться два идентичных дерева каталогов, но в каждом дереве - свои файлы.
Far version 2.0
User avatar
Konstantin
Posts: 234
Joined: Wed 14 Jun, 2006 19:29
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 5 times

Post by Konstantin »

Бесплатная русскоязычная мощная утилита nnBackup http://www.nncron.ru/index_ru.shtml
«Раньше я думал, что чудаки это те, кто делают странные вещи. Теперь я знаю, что это те, кто называют других странными.» (П. Маккартни)
User avatar
zencd
Posts: 74
Joined: Wed 07 Sep, 2005 13:09
Location: spb

Post by zencd »

спасибо, (экий он разнообразный ннкрон)
хотя решение на базе фара было бы предпочтительнее
User avatar
Konstantin
Posts: 234
Joined: Wed 14 Jun, 2006 19:29
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 5 times

Post by Konstantin »

zencd wrote:решение на базе Фара было бы предпочтительнее
Согласен вполне.

Переспросите ещё более определённо или подождите и м.б. кто-то из аборигенов ФарФорума сможет подсобить с макросом...
«Раньше я думал, что чудаки это те, кто делают странные вещи. Теперь я знаю, что это те, кто называют других странными.» (П. Маккартни)
User avatar
bormant
Posts: 118
Joined: Fri 01 Apr, 2005 13:17
Contact:

Post by bormant »

Code: Select all

init.bat:
@echo off
for %%i in (1 2 3) do for %%j in (1 2 3) do mkdir src\test-%%i\test-%%i-%%j
for %%i in (1 2 3) do for %%j in (1 2 3) do for %%k in (a b c d e) do @echo.> src\test-%%i\test-%%i-%%j\file.%%k
создал тестовую структуру и проверил на ней работу нижеследующего -- вроде то, что нужно.

Code: Select all

test.bat:
@echo off
setlocal enableextensions enabledelayedexpansion

set not_move_ext=.c,.d
set src=.\src
set dst=.\dst

call :fullname %src% fsrc

for /r %src% %%i in (*) do (
 set t=%%~dpi
 set t=!t:%fsrc%=%dst%!
 mkdir !t! 2>nul
 set move=t
 for %%j in (%not_move_ext%) do if /i "%%j"=="%%~xi" set move=f
 if !move!==t move %%~fi !t!
)

goto :eof

:fullname
set %2=%~f1
goto :eof
замену src и dst на %1, %2 с проверками дописать самостоятельно.
Как сделать то же средствами фара - не знаю.
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Post by Centaur »

По Alt+F7 находим все файлы, которые перемещать. Сваливаем их во временную панель. Выделяем все, копируем имена с путями через буфер в редактор. Плагином Search&Replace заменяем

Code: Select all

(("?)Q:\\source\\path\\(.*)\2)
на

Code: Select all

md $2W:\dest\path\$3\..$2 & move $1 $2W:\dest\path\$3$2
Полученный файл сохраняем как tmp.cmd и запускаем.
User avatar
jbak
Posts: 609
Joined: Tue 04 Oct, 2005 15:01
Location: Одесса

Post by jbak »

Ё, как сложно... А не проще ли в диалоге F6 задать фильтр, воспользовавшись в нём маской исключения?
User avatar
Konstantin
Posts: 234
Joined: Wed 14 Jun, 2006 19:29
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 5 times

Post by Konstantin »

jbak wrote:в диалоге F6 задать фильтр, воспользовавшись в нём маской исключения
А у меня почему-то не получается таким образом распространить действие фильтра на дерево папок. Фильтр срабатывает лишь на первом, т.е. непосредственно видимом уровне. Следующие подуровни папок перемещаются вместе со всеми содержащимися в них файлами. М.б. я что-то неверно делаю?
«Раньше я думал, что чудаки это те, кто делают странные вещи. Теперь я знаю, что это те, кто называют других странными.» (П. Маккартни)
User avatar
Andrey Budko
Posts: 1203
Joined: Fri 01 Apr, 2005 14:03
Contact:

Post by Andrey Budko »

То, что фильтры в диалоге переноса только для декорации пора бы уже и знать, не маленькие. Другое дело как отжигает фаровский диалог копирования при использовании масок в индикации прогресса. Числа вида "-123345:-1:" в поле remaining там не редкость. Хотя кого нынче этим удивишь...

Я, кстати, слышал - им пользуются некоторые! Это не миф?
User avatar
Konstantin
Posts: 234
Joined: Wed 14 Jun, 2006 19:29
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 5 times

Post by Konstantin »

Andrey Budko wrote:фаровский диалог копирования при использовании масок...

Я, кстати, слышал - им пользуются некоторые! Это не миф?
Ну вот, например, поставленную в теме задачу за два F5 и один Del исходного дерева папок решить можно с помощью фильтров.

Это хоть и менее удобно чем по F6 было бы, а всёж-таки лучше, чем внешнюю утилиту настраивать.
И толи ещё будет когда и на F6 фильтры будут доделаны...

Успехов в совершенствовании ФАРа!
«Раньше я думал, что чудаки это те, кто делают странные вещи. Теперь я знаю, что это те, кто называют других странными.» (П. Маккартни)
User avatar
Вадим Захаренко
Posts: 922
Joined: Fri 18 Mar, 2005 08:59
Location: Беларусь, Мозырь
Has thanked: 7 times
Contact:

Post by Вадим Захаренко »

zencd
RoboCopy C:\ConsUserData\ D:\ConsUserData *.* /E /Mov /XF *.txt *.dll
исключая файлы *.txt, *.dll

Утилита Robocopy must have
User avatar
Konstantin
Posts: 234
Joined: Wed 14 Jun, 2006 19:29
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 5 times

Re: Как переместить дерево файлов +выфильтровать опр.расшире

Post by Konstantin »

zencd
zencd wrote:по окончании операции должно получиться два идентичных дерева каталогов, но в каждом дереве - свои файлы.
Nnbackup copy -i <откуда> -o <куда> -x исключающяя маска, исключающяя маска, ... -s -e -d -p
-s – учитывать вложенные каталоги при копировании, т. е. копировать файлы из исходного каталога и всех его подкаталогов;
-e – копировать пустые каталоги;
-d – удалять скопированные файлы из исходного каталога; удаляются только файлы, каталоги не удаляются;
-p – копируя файл в приемный каталог, создавать структуру каталогов, соответствующую полному пути файла в исходном каталоге.

http://www.nncron.ru/index_ru.shtml Nnbackup – суперутилита!

При этом
Konstantin wrote:
zencd wrote:решение на базе Фара было бы предпочтительнее
Согласен вполне.
когда к F6 прикрутятся фильтры задача будет решаться оперативней и комфортней.

Успехов в совершенствовании и удовольствия в использовании ФАРа!
«Раньше я думал, что чудаки это те, кто делают странные вещи. Теперь я знаю, что это те, кто называют других странными.» (П. Маккартни)
User avatar
jbak
Posts: 609
Joined: Tue 04 Oct, 2005 15:01
Location: Одесса

Post by jbak »

Насчёт F6 - записал на мантис, вроде там нет такого[/url]
User avatar
Andrey Budko
Posts: 1203
Joined: Fri 01 Apr, 2005 14:03
Contact:

Post by Andrey Budko »

Ну вот, например, поставленную в теме задачу за два F5 и один Del исходного дерева папок решить можно с помощью фильтров. Это хоть и менее удобно чем по F6 было бы, а всёж-таки лучше, чем внешнюю утилиту настраивать. И толи ещё будет когда и на F6 фильтры будут доделаны...
Ты забыл одну вещь. Фар файлы копировать не умеет.
когда к F6 прикрутятся фильтры задача будет решаться оперативней и комфортней.
Задача будет решаться "в принципе" только после того, как фар научится копировать файлы, а этого не случится никогда.
User avatar
Andrey Budko
Posts: 1203
Joined: Fri 01 Apr, 2005 14:03
Contact:

Post by Andrey Budko »

Насчёт F6 - записал на мантис, вроде там нет такого
А насчет масок исключения почему не записал? Ведь автору первого поста нужно именно "файлы с некоторым расширением не перемещать", то есть задать маску вида "*.*|*.exe", а такие маски и в копировании не работают.
Post Reply

Return to “Нужна помощь”