В этой теме обсуждаются общие различные вопросы, связанные с кнопками. Для обсуждения вопросов, касающихся какого-то отдельного скрипта, утилиты, программы, участвующих в кнопке, будет выделена отдельная тема. Если такая тема создана, вопрос будет обсуждаться там
Задача такая: Есть список папок (его можно в буфер пихнуть или курсор на него поставить) надо чтоб копировались из этих папок только файлы в др. панель (с заменой) и чтоб структура сохранялась, как в списке. Например, если в тысячной строке списка написато c:\DISK_M\Proba3\Utilites\INTERNET\FirefoxPortable\App\Firefox64\webapprt\ , то в другой панели тоже было бы DISK_M\Proba3\Utilites\INTERNET\FirefoxPortable\App\Firefox64\webapprt\ + файлы.
Andrey_A, со списками я вроде разобрался (в меру своего понимания этого вообще) и чувствую, что в полушаге от решения... ан не дается паразитка...
"copys=%L||"%t"::!!0!!(.*\\)(\w:\\)(.*\\).+\\?!!$1$3" - копировать в другую панель выделенное, сохраняя структуру копируемого без буквы диска, не заменяя имеющиеся элементы "copys=%L||"%t"::!!0!!(.+\\)(\w):(\\.+)\\.+\\?!!$1$2$3" - копировать в другую панель выделенное, сохраняя структуру копируемого с буквой диска, не заменяя имеющиеся элементы
чтобы было с заменой, то поставить 1 во 2-м параметре:
"copys=cliplist||"%t"::!!1!!(.*\\)(\w:\\)(.*\\).+\\?!!$1$3" - копировать в ДП (список путей из буфера), сохраняя структуру копируемого без буквы диска, заменяя имеющиеся элементы
Спасибо. Но что-то смущает... пока не знаю что... Устал уже сегодня. Пишите, звоните.
simup, я понял, что тебе нужно просто синхронизировать каталоги выделенные а обеих панелях. Я с давних пор (уже привычка) использую эту утилиту в тандеме с TCIMG . Утилита весит 1мб, портативна. Скачиваем, распаковываем, закидываем в папку TC. Далее, чтобы в кнопке не указывать путь к исполняемому файлу, в TCIMG.ini или TCIMGU.ini, а секции [Programs] прописываем:
TOTALCMD#BAR#DATA %COMMANDER_PATH%\TCIMG.exe watch=1 global slist=%L xlist=[tc=TM] <FOR> 1 <TO> GLOBALSLIST<0> start=Sync||GLOBALSLIST<:INDEX:>||GLOBALXLIST<:INDEX:>||/R||/H||/M||/copy||/auto||&&wait <NEXT> beepss Wcmicons.dll,21 Синхронизировать выделенные каталоги в обеих панелях. Файлы папок в другой панели будут переписаны файлами из папок активной панели. -1 -1
Синхронизируются выделенные папки соответственно своим (выделенным) позициям в панелях, то бишь 1-я выделенная папка в активной панели синхронизируется с 1-ой выделенной папкой другой панели.
Параметры используемые в кнопке:
/copy - точная копия файла, если заменить этот параметр, в выложенной выше кнопке, на параметр /sync, то папка с крайней датой изменения файла будет доминирующей, вне зависимости от панели, и файлы именно из этой папки будут заменять похожие файлы в папке (согласно выделенной позиции) другой панели. /H - Игнорировать скрытые и системные файлы /M - Только имеющиеся похожие файлы /R - Включить подпапки Если нет выделения синхронизируются папка под курсором и подсвеченная в другой панели.
В свое время перевел часть справки, касаемые параметров командной строки, для себя на русский, положил в архив, для уточнения принадлежности параметров.
Добавлено:
Вот вариант с заменой всего содержимого выделенных папок другой панели содержимым выделенных папок активной панели, спредварительной очисткой выделенных папок в другой панели:
Благодарю за отзывчивость. chip642, для быстрой синхронизации ты предложил замечательный вариант - обязательно возьму на вооружение. Но это не та задача, для которой искал решение. Видимо, моё косноязычие сильно припятствует донесению сути вопроса... Попытаюсь объяснить еще раз. Наверное, на примере TC Image будет удобнее. Есть TC Image и копия на другом диске. Копию "облегчаем" - удаляем всё из папки Programs\ кроме, допустим, браузера и пары-троки др. программ. Я работаю с оригиналом, обновляю TCIMG, в AkelPad меняю что-то под себя, в утилите clcl появляются новые закладки и пр. пр. Как теперь быстро обновить "облегченную" копию? Врукопашную долго, да и забыть можно че-то. Метод синхронизации не подходит - снова скопируется всё содержимое папки Programs\ (а если "облегченных" папок больше?). Через составление списка всех файлов в копии тоже - ведь в оригинале могли появится новые (например, в браузере добавил плагин или приложение) А вот через составление списка всех папок в копии - уже проще. Мне остается только помнить при создании новых папок в оригинале - нужны-ли они мне в копии. Обновляем копию: 1 Создать структурный список всех папок в копии (lists=PS<"%P"!!2>||save<%%TEMP%%\List.txt>) 2 Поменять в нем начало пути на другой (тот, где оригинал) 3 Копируем по списку содержимое папок (файлы) из оригинала в копию (copys=cliplist||"%t"::!!1!!(.*\\)(\w:\\)(.*\\).+\\?!!$1$3) Эти три действия все-же проще, чем врукопашную копирвать из "бумажного" списка (раньше я старался записывать изменения в файлик). По первым двум пунктам есть неудобства. Было бы лучшее, если список составлялся бы относительно выделенного каталога, а затем было-бы достаточно встать на папку оригинала.
Можешь спросить - на хрена всё это? Я занимаюсь ремонтом, настройкой капутеров и хожу "в люди" Таскаю с собой мого всякого "барахла" на диске (в том числе и чужого). И вот такая "не полная" синхронизация мне частенько нужна бывает. Это я на примере TC Image показал, но есть и другие варианты (допустим, сайт-оригинал и его "легкая" копия или простое избавление от "мусора" в нескольких местах). Если у тебя будет время вникнуть во всё это де... дело, буду благодарен за предложения.
Andrey_A, как долго продлится акция? А можно две кнопки в подарок? Пишите, звоните.
Ну вот теперь задача ясна, всего лишь надо заменить в моей кнопке параметр /M -"Только похожие файлы" на параметр" /RM - "Только совпавшие вложенные подпапки".
simup Ну и славненько! ---------- А теперь бонусы от TCIMG.
Для того, чтобы постоянно не выделять папки в панелях, мы просто пропишем пути к этим папкам в созданных списках, а потом одним нажатием на кнопку будем обновлять (как говорится "в темную"). Для этого создадим два списка полных путей к папкам. Содержимое папок из одного списка (в зависимости от того, где мы его укажем в параметрах команды) будет обновлено содержимым списком другого файл-списка. Тандемное взаимодействие папок, согласно очередности в обоих списках, то бишь, папка по первому пути из одного файл-списка взаимодействует с папкой по первому пути из другого файл-списка.
Обновить папки из списка list2<> содержимым папок из списка list<> по принципу имеющихся схожих подпапок
Если массивы огромные, то для ускорения процесса можно предварительно очищать папки из списка list2<> от файлов, сохраняя тем самым структуру вложенности папок, так как условие подразумевает обновление по принципу имеющихся в наличии схожих папок, подпапок. Для очистки от файлов будем использовать Подпараметр LISTF<> (желательно прочитать про данный подпараметр, чтобы знать, как прописывать пути в файле пользовательских настроек TCIMGU.ini, на случай если пути длинные или их много и вообще для компактности команды)
Полные пути папок в LISTF<> разделяются прямым слешем /
Обновить папки из списка list2<>(предварительно очистив их от всех файлов) содержимым папок из списка list<> по принципу имеющихся схожих подпапок
Надеюсь понятно, в данном случае список list2<> содержит пути к двум папкам C:\TEST_01\ и C:\TEST_02\, я вначале их очищаю от файлов, а потом заменяю данные папки содержимым папок из списка list<>.