[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: Andrey_A, ХарВик, chip642  
Форум » • Total Commander • » Кнопки для Total Commander » ОБЩИЕ ВОПРОСЫ ПО КНОПКАМ (Обсуждение общих вопросов, связанных с кнопками)
ОБЩИЕ ВОПРОСЫ ПО КНОПКАМ
Andrey_AДата: Вторник, 10.07.2012, 17:29 | Сообщение № 1
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7167
Награды: 139
Репутация: 125
Аверин Андрей
ОБЩИЕ ВОПРОСЫ ПО КНОПКАМ



В этой теме обсуждаются общие различные вопросы, связанные с кнопками. Для обсуждения вопросов, касающихся какого-то отдельного скрипта, утилиты, программы, участвующих в кнопке, будет выделена отдельная тема. Если такая тема создана, вопрос будет обсуждаться там






.


 
simupДата: Пятница, 20.05.2016, 22:31 | Сообщение № 256
Генерал-лейтенант

На сайте с: 26.01.2012
Город: Уфа
Сообщений: 535
Награды: 6
Репутация: 7
Доброй ночи, всем.

Задача такая:
Есть список папок (его можно в буфер пихнуть или курсор на него поставить)
надо чтоб копировались из этих папок только файлы в др. панель (с заменой) и чтоб структура сохранялась, как в списке.
Например, если в тысячной строке списка написато c:\DISK_M\Proba3\Utilites\INTERNET\FirefoxPortable\App\Firefox64\webapprt\ , то в другой панели тоже было бы
DISK_M\Proba3\Utilites\INTERNET\FirefoxPortable\App\Firefox64\webapprt\ + файлы.

Andrey_A, со списками я вроде разобрался (в меру своего понимания этого вообще) и чувствую, что в полушаге от решения... ан не дается паразитка...



Пишите, звоните.
 
Andrey_AДата: Пятница, 20.05.2016, 22:42 | Сообщение № 257
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7167
Награды: 139
Репутация: 125
Аверин Андрей
simup, в справке есть примеры копирования:

Код
"copys=%L||"%t"::!!0!!(.*\\)(\w:\\)(.*\\).+\\?!!$1$3" - копировать в другую панель выделенное, сохраняя структуру копируемого без буквы диска, не заменяя имеющиеся элементы
"copys=%L||"%t"::!!0!!(.+\\)(\w):(\\.+)\\.+\\?!!$1$2$3" - копировать в другую панель выделенное, сохраняя структуру копируемого с буквой диска, не заменяя имеющиеся элементы


чтобы было с заменой, то поставить 1 во 2-м параметре:

Код
copys=%L||"%t"::!!1!!(.*\\)(\w:\\)(.*\\).+\\?!!$1$3


 
simupДата: Пятница, 20.05.2016, 23:58 | Сообщение № 258
Генерал-лейтенант

На сайте с: 26.01.2012
Город: Уфа
Сообщений: 535
Награды: 6
Репутация: 7
Andrey_A,
Для меня вот в таком виде годится:
Код

"copys=cliplist||"%t"::!!1!!(.*\\)(\w:\\)(.*\\).+\\?!!$1$3" - копировать в ДП (список путей из буфера), сохраняя структуру копируемого без буквы диска, заменяя имеющиеся элементы

Спасибо.
Но что-то смущает... пока не знаю что...
Устал уже сегодня.


Пишите, звоните.
 
chip642Дата: Суббота, 21.05.2016, 00:05 | Сообщение № 259
Генералиссимус

На сайте с: 24.04.2013
Город: Москва
Сообщений: 1495
Награды: 62
Репутация: 58
Цитата simup ()
Но что-то смущает... пока не знаю что...

Наверное отсутствие "чертежей".
 
Andrey_AДата: Суббота, 21.05.2016, 00:33 | Сообщение № 260
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7167
Награды: 139
Репутация: 125
Аверин Андрей
А вот и чертёж :D



 
simupДата: Суббота, 21.05.2016, 01:03 | Сообщение № 261
Генерал-лейтенант

На сайте с: 26.01.2012
Город: Уфа
Сообщений: 535
Награды: 6
Репутация: 7
Доступно только для пользователей

Пишите, звоните.
 
chip642Дата: Суббота, 21.05.2016, 01:35 | Сообщение № 262
Генералиссимус

На сайте с: 24.04.2013
Город: Москва
Сообщений: 1495
Награды: 62
Репутация: 58
simup, я понял, что тебе нужно просто синхронизировать каталоги выделенные а обеих панелях. Я с давних пор (уже привычка) использую эту утилиту в тандеме с TCIMG . Утилита весит 1мб, портативна. Скачиваем, распаковываем, закидываем в папку TC. Далее, чтобы в кнопке не указывать путь к исполняемому файлу, в TCIMG.ini или TCIMGU.ini, а секции [Programs] прописываем:

_______________ TCIMG.ini _______________
[Programs]
-------
Sync=%COMMANDER_PATH%\свой путь\wndsync.exe
___________________________________

Теперь рассмотрим кнопку:

Код
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 - Включить подпапки
Если нет выделения синхронизируются папка под курсором и подсвеченная в другой панели.

В свое время перевел часть справки, касаемые параметров командной строки, для себя на русский, положил в архив, для уточнения принадлежности параметров.

Добавлено:

Вот вариант с заменой всего содержимого выделенных папок другой панели содержимым выделенных папок активной панели, с предварительной очисткой выделенных папок в другой панели:

Код
watch=1 global slist=%L xlist=[tc=TM] delss=FOLDC<[tc=TM]!!0!!-3>||1 <FOR> 1 <TO> GLOBALSLIST<0> start=Sync||GLOBALSLIST<:INDEX:>||GLOBALXLIST<:INDEX:>||/R||/H||/copy||/auto||&&wait <NEXT>
 
simupДата: Суббота, 21.05.2016, 18:43 | Сообщение № 263
Генерал-лейтенант

На сайте с: 26.01.2012
Город: Уфа
Сообщений: 535
Награды: 6
Репутация: 7
Всем, здравствуйте!



Andrey_A, как долго продлится акция? А можно две кнопки в подарок?


Пишите, звоните.
 
chip642Дата: Суббота, 21.05.2016, 19:15 | Сообщение № 264
Генералиссимус

На сайте с: 24.04.2013
Город: Москва
Сообщений: 1495
Награды: 62
Репутация: 58
Цитата simup ()
Но это не та задача, для которой искал решение.

Ну вот теперь задача ясна, всего лишь надо заменить в моей кнопке параметр /M -"Только похожие файлы" на параметр" /RM - "Только совпавшие вложенные подпапки".
 
simupДата: Суббота, 21.05.2016, 21:44 | Сообщение № 265
Генерал-лейтенант

На сайте с: 26.01.2012
Город: Уфа
Сообщений: 535
Награды: 6
Репутация: 7
chip642, замечательно!
Изучу подробнее - отпишусь.
Сегодня занят другим. Всего наилучшего!


Пишите, звоните.
 
simupДата: Воскресенье, 22.05.2016, 02:21 | Сообщение № 266
Генерал-лейтенант

На сайте с: 26.01.2012
Город: Уфа
Сообщений: 535
Награды: 6
Репутация: 7
chip642, ДА!
Это как раз то, что надо. Отрабатывает шустро даже большой массив.
АГРАМАДНАЯ СПАСИБА!!!


Пишите, звоните.
 
chip642Дата: Воскресенье, 22.05.2016, 05:55 | Сообщение № 267
Генералиссимус

На сайте с: 24.04.2013
Город: Москва
Сообщений: 1495
Награды: 62
Репутация: 58
simup
Ну и славненько!
----------
А теперь бонусы от TCIMG.

Для того, чтобы постоянно не выделять папки в панелях, мы просто пропишем пути к этим папкам в созданных списках, а потом одним нажатием на кнопку будем обновлять (как говорится "в темную").
Для этого создадим два списка полных путей к папкам. Содержимое папок из одного списка (в зависимости от того, где мы его укажем в параметрах команды) будет обновлено содержимым списком другого файл-списка. Тандемное взаимодействие папок, согласно очередности в обоих списках, то бишь, папка по первому пути из одного файл-списка взаимодействует с папкой по первому пути из другого файл-списка.

Обновить папки из списка list2<> содержимым папок из списка list<> по принципу имеющихся схожих подпапок

Код
watch=1 start=Sync||list<C:\ListPathFolders.txt>||list2<C:\ListPathFolders(1).txt>||/H||/R||/RM||/copy||/auto||&&wait


Если массивы огромные, то для ускорения процесса можно предварительно очищать папки из списка list2<> от файлов, сохраняя тем самым структуру вложенности папок, так как условие подразумевает обновление по принципу имеющихся в наличии схожих папок, подпапок.
Для очистки от файлов будем использовать Подпараметр LISTF<> (желательно прочитать про данный подпараметр, чтобы знать, как прописывать пути в файле пользовательских настроек TCIMGU.ini, на случай если пути длинные или их много и вообще для компактности команды)

Полные пути папок в LISTF<> разделяются прямым слешем /

Обновить папки из списка list2<>(предварительно очистив их от всех файлов) содержимым папок из списка list<> по принципу имеющихся схожих подпапок

Код
watch=1 delss=FOLDC<LISTF<C:\TEST_01/C:\TEST_02>!!1!!-1>||1 start=Sync||list<C:\ListPathFolders.txt>||list2<C:\ListPathFolders(1).txt>||/H||/R||/RM||/copy||/auto||&&wait

Надеюсь понятно, в данном случае список list2<> содержит пути к двум папкам C:\TEST_01\ и C:\TEST_02\, я вначале их очищаю от файлов, а потом заменяю данные папки содержимым папок из списка list<>.
 
simupДата: Воскресенье, 22.05.2016, 10:09 | Сообщение № 268
Генерал-лейтенант

На сайте с: 26.01.2012
Город: Уфа
Сообщений: 535
Награды: 6
Репутация: 7
Цитата chip642 ()
А теперь бонусы от TCIMG.


Ага-аа, значит акция продолжается? :)



Пишите, звоните.
 
chip642Дата: Воскресенье, 22.05.2016, 10:16 | Сообщение № 269
Генералиссимус

На сайте с: 24.04.2013
Город: Москва
Сообщений: 1495
Награды: 62
Репутация: 58
Цитата simup ()
А зачем ты всегда ставишь параметр /H

Это уже по надобности, да, я для примера.
 
simupДата: Среда, 25.05.2016, 17:18 | Сообщение № 270
Генерал-лейтенант

На сайте с: 26.01.2012
Город: Уфа
Сообщений: 535
Награды: 6
Репутация: 7
Доступно только для пользователей

Пишите, звоните.
 
Форум » • Total Commander • » Кнопки для Total Commander » ОБЩИЕ ВОПРОСЫ ПО КНОПКАМ (Обсуждение общих вопросов, связанных с кнопками)
Поиск:

Интеллектуальные права и отказ от ответственности