Обмен кнопками
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3 ... , 43, 44, 45  Next  :| |:
Total Commander -> Секреты и советы

#646:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat Jan 28, 2017 17:15
    —
Dimsok
Прошу заглянуть на страницу 66 темы по обсуждению кнопок и припомнить, о чём там шла речь насчёт рабочих решений, оформления кнопок и пояснений к ним. Слишком много предлагается кнопок, которые юзер использовать без доводки не может. Хотя бы из-за путей к личным папкам в трёх последних постах (в тексте кнопки это хотя бы цветом отметить следовало). В конце концов, основной целью выкладывания кнопок должно быть удобство тех, кто будет ими пользоваться. Прошу принять к сведению, иначе модераторам действительно придётся ввести эту процедуру в какие-то пристойные берега.

#647:  Author: sa PostPosted: Tue Mar 14, 2017 18:11
    —
По мотивам этого запроса.
Кнопка (версия TC 9.xx) для удаления файлов/каталогов по заданной маске, регулярному выражению с символом < или шаблону поиска с символом >. Требуется утилита TCFS2 (функции дополнительного модуля TCFS2Tools не используются):
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef "set_ini(`%COMMANDER_PATH%\usercmd.ini`, em_temp, cmd, `SELECTFILESB `
`>Файлы старше 1 недели`                                                       ) tcm(524) tem(em_temp) if(msg($432,1004+msg($432,1000)), tcm(908))"
WCMICONS.DLL,64
Удалить файлы/каталоги |по маске (например: *.bak *.old) |регулярному выражению (<[ab].*) |или шаблону поиска (>Файлы старше 1 недели)


-1
Для задания альтернативного варианта, удалить в Корзину или в обход Корзины (зависящего от настроек TC), при вызове кнопки нажать клавишу Shift.
В кнопке для команды SELECTFILES добавлен модификатор B (выделяются и файлы и папки, соответствующие маске или шаблону). Можно указать D (только папки) или убрать модификатор (только файлы).
Если сильно захочется подтвердить удаление непосредственно в кнопке, то можно заменить tcm(908))" на
tcm(908,1) + eval(send_wait(`{ENTER}`, findwnd(`#32770`))))".
В дополнение, команду удаления файлов tcm(908) при желании можно поменять на команду копирования tcm(905) или перемещения tcm(906).

Чтобы при вызове кнопки файл usercmd.ini каждый раз не перезаписывался (из-за создания утилитой временной пользовательской команды em_temp), можно самостоятельно создать пользовательские команды выделения, например:
em_selB, состоящую из команды SELECTFILESB,
em_selD, состоящую из команды SELECTFILESD и
em_sel, состоящую из команды SELECTFILES,
одну из которых, в зависимости от решаемой задачи, и указывать в кнопке:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef "tcm(524) tem(`em_selB `
`>Файлы старше 1 недели`                                                       ) if(msg($432,1004+msg($432,1000)), tcm(908))"
WCMICONS.DLL,64
Удалить файлы/каталоги |по маске (например: *.bak *.old) |регулярному выражению (<[ab].*) |или шаблону поиска (>Файлы старше 1 недели)


-1

#648:  Author: FlasherLocation: Москва PostPosted: Fri Oct 13, 2017 02:42
    —
Запрошено:
Quote:
TOTALCMD#BAR#DATA
%comspec% /q /c (for %# in
(%P%S) do call set "P=%%P%% %%# -title "%%~nx#"")&&call mplayer.exe -nofontconfig -really-quiet -fs -panscan 1 %%P:~4%%

Utils\MPlayer\mplayer.exe
MPlayer — воспроизвести выбранные видео на полном|экране с поочерёдным выводом имён в заголовок окна
%COMMANDER_PATH%\Utils\MPlayer\
1

#649:  Author: FlasherLocation: Москва PostPosted: Fri May 04, 2018 07:02
    —
Текст файла в буфер (по запросу) с определением OEM, ANSI, UTF-7, UTF-8, UTF-16.
Quote:
TOTALCMD#BAR#DATA
%ComSpec% /v:on /q/c echo off&set CP1251=1251&set ASCII=1251&set IBM866=866&set UTF-7=65000&set UTF-8=65001&set UCS-2=65001&for /f "tokens=1 delims=/" %# in ('
enca.exe -e -L russian
%V') do chcp !%%#!&cls&clip<%V
wcmicons.dll,45

Скопировать в буфер обмена текст файла под курсором
%COMMANDER_PATH%\Utils\Enca
1
Enca 1.13.
Enca 1.19 | Enca 1.20 (спасибо addhaloka).

#650:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat Jun 09, 2018 16:03
    —
All
Поскольку беспрерывные призывы соблюдать правила и помещать запросы на кнопки не в этой теме, а в специальной, некоторой частью участников (причём отнюдь не только новичками) упорно игнорируются, придётся прибегнуть к более сильным мерам. Впредь откровенный оффтоп такого рода будет из этой темы попросту удаляться. Иного пути приучить кое-кого к порядку, к сожалению, не вижу. Сообщение AlexTex было в этом ряду первым номером.

#651:  Author: FlasherLocation: Москва PostPosted: Mon Jul 09, 2018 21:06
    —
Близко к теме:
Quote:
TOTALCMD#BAR#DATA
*%ComSpec% /v:on /q/c @echo off&for /r %# in (*.
txt) do for /f "eol=C skip=1 delims=" %h in ('certutil -hashfile "%#" MD5') do set "crc=%h"&&call robocopy "%~dp#\"
"%P!crc: =!" "%%~nx#" /MOV /NJH /NJS /NDL /NFL&cls
wpdshext.dll,4
Переместить
txt-файлы из структуры активного каталога в MD5-папки

1
Quote:
TOTALCMD#BAR#DATA
*%ComSpec% /v:on /q/c @echo off&for /r %# in (*.
txt) do for /f "eol=C skip=1 delims=" %h in ('certutil -hashfile "%#" MD5') do set "crc=%h"&& call xcopy "%#" !crc: =!\ /chikorqxy

FXSRESM.dll,11
Скопировать
txt-файлы из структуры активного каталога в MD5-папки

1
Windows Vista+. Другие алгоритмы: MD2, MD4, SHA1, SHA256, SHA384, SHA512.

#652:  Author: sa PostPosted: Thu Jun 20, 2019 13:41
    —
На основе запроса:
Code:
TOTALCMD#BAR#DATA
cm_ClearAll,cm_FocusTrg,cm_ClearAll,cm_FocusTrg,cm_select,em_SyncOpen=,cm_ClearAll

wcmicons.dll,48
Синхронизировать папку/файл под курсором


-1
где em_SyncOpen= это пользовательская команда, представляющая SYNCOPEN = (можно вместо пользовательской подставить встроенную команду cm_FileSync, чтобы сравнение не начиналось сразу после открытия диалога).
Если требуется предупреждение об отсутствии в целевом каталоге папки или файла с тем же именем, что под курсором в исходной панели, то сцепка команд может быть такой:
Code:
524,4006,524,4006,em_SelT,cm_select,em_SyncOpen=,524,4006,524,4006
В ней добавлена пользовательская команда em_SelT, представляющая SELECTFILESBT с %Z%N в строке параметров.

Кнопка для синхронизации одноимённых папок:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_EXE%
/S=S:= %Z%X%P%x%N %X%T%x%N
wcmicons.dll,48
Синхронизировать папку под курсором с одноимённой в другой панели


-1
Чтобы сравнение не начиналось сразу после открытия диалога, следует убрать знак = после двоеточия.

#653:  Author: sa PostPosted: Thu Jul 25, 2019 09:38
    —
Поскольку время правки предыдущего сообщения истекло, выложу подправленную (с кавычками) кнопку здесь
Code:
TOTALCMD#BAR#DATA
%COMMANDER_EXE%
/S=S:= %Z%X"%P%x"%N %X"%T%x"%N
wcmicons.dll,48
Синхронизировать папку под курсором с одноимённой в другой панели


-1
Если под курсором [..], то файловые панели синхронизируются целиком.
Помимо синхронизации папок кнопка подходит и для сравнения одноимённых файлов архивов.

#654:  Author: sa PostPosted: Fri Aug 16, 2019 15:32
    —
Отголосок этой темы. Кнопка с утилитой TCFS2.
Функции дополнительного модуля TCFS2Tools не используются.
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef "set_ini(`%COMMANDER_PATH%\usercmd.ini`, em_temp, cmd, `SyncOpen = Несуществующее имя шаблона`) tem(em_temp)
delay(200) if(findwnd(`#32770`)!=0, delay(1000) + send(`{ESC 2}`, findwnd(`#32770`)), loop(if(findwnd(`TCmpForm`)!=0 && findwnd(`TCheckEditBox`)==0, 0*send(`+{END}^%%l`, findwnd(`TCmpForm`))*delay(100)+1, 0)) + if(findwnd(`TCmpForm`)!=0, eval(send_wait(`{ENTER}`, findwnd(`TCheckEditBox`),1)) + loop(if(findwnd(`TCmpForm`)==0, 0, 0*send(`~(%%ы)`, findwnd(`TCmpForm`))*delay(100)+1)) + if(msg($432,1000)-1, tcm(540), tcm(4002) + tcm(540) + tcm(4001))))" %Z
WCMICONS.DLL,48
Копировать СЛЕВА  -->  НАПРАВО метки даты/времени одноимённых файлов


-1
Для поиска одноимённых файлов и копирования их меток даты/времени используется инструмент синхронизации каталогов.
Если выделения в файловых панелях нет, то они обрабатываются целиком (с учётом подкаталогов).
Если выделены папки/файлы (не важно в какой из панелей, можно выбирать и в обеих), то в последующих операциях участвуют только они.
Какая из панелей активна, значения не имеет.

#655:  Author: sa PostPosted: Wed May 06, 2020 16:52
    —
Кнопка с утилитой TCFS2 для поиска с плагинами.
Функции дополнительного модуля TCFS2Tools не используются.
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef "set_ini(`%COMMANDER_PATH%\usercmd.ini`, em_TempParam, cmd, `%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef "set_tcini(Searches, $tmp_plugin,`) set_ini(`%COMMANDER_PATH%\usercmd.ini`, em_TempParam, param,
<`?       ` tc.writedate >= 06.05.20 `                                                                                          ) tem(em_temp)"`>) set_ini(`%%COMMANDER_PATH%%\usercmd.ini`, em_temp, cmd, `cd >$tmp`) set_tcini(Searches, $tmp_SearchIn, ``) set_tcini(Searches, $tmp_SearchFor, ``) set_tcini(Searches, $tmp_SearchText, ``) set_tcini(Searches, $tmp_SearchFlags, ``) tem(em_TempParam) eval(send_wait(`{HOME}^{RIGHT 2}`, findwnd(`TSTDTREEDLG`)))"
wcmicons.dll,24
Задать параметры пользовательского шаблона $tmp для поиска с плагинами| и применить фильтр с ним в активной панели
tc.writedate >= 05.05.20 & tc.writedate <= 06.05.20 | tc.ext = txt | exif.ISO = 400 | age.Changed.Minutes < 1 | (Seconds Minutes Hours Days Weeks Months Years)
Путь к утилите TCFS2 заменить на свой (в двух местах кода кнопки).
В поле "Путь запуска:" приведено несколько примеров для правки поля "Параметры:" (в косых кавычках).

#656:  Author: sa PostPosted: Tue Jun 02, 2020 10:58
    —
Кнопка (версия TC 9.0+) для поиска файла/каталога под курсором (активной панели) в неактивной.
Требуется утилита TCFS2, функции дополнительного модуля TCFS2Tools не используются.
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef "if(msg($432,1007-msg($432,1000)), varset(1,1), varset(1,0)) set_ini(`%COMMANDER_PATH%\usercmd.ini`, em_temp, cmd, `LOADSEARCH $tmp`) set_tcini(Searches, $tmp_SearchFlags,
`1|0020`  varget(1)  `2000020|||||||||0000|||`) if(null("%N"),set_tcini(Searches, $tmp_SearchFor, ``), set_tcini(Searches, $tmp_SearchFor, `%Z%N.`)) set_tcini(Searches, $tmp_SearchIn, ``) set_tcini(Searches, $tmp_SearchText, ``) set_tcini(Searches, $tmp_plugin, ``) tcm(4006) tem(em_Temp) eval(send_wait(`{ENTER}`, findwnd(`TFindFile`)))"
wcmicons.dll,47
Поиск текущего файла/каталога в неактивной панели |(в том числе в архивах)
Если в активной панели под курсором `..`, то TC будет искать все файлы/каталоги.
При наличии выделения в неактивной панели поиск выполняется только в выделенных файлах/каталогах.
Чтобы исключить поиск в архивах, следует в поле "Параметры:" первую 1 заменить на 0.

#657:  Author: sa PostPosted: Sat Jul 18, 2020 09:21
    —
Отсюда

kirimbay
На скорую руку, для TC версии 9.0 и выше, кнопка для выделения объектов между двумя выделенными.
Требуется утилита TCFS2, функции дополнительного модуля TCFS2Tools не используются.
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "if(msg($432,1004+msg($432,1000))==2,tcm(2049)+tcm(2053)+varset(1,msg($432,1006+msg($432,1000))-msg($432,1008+msg($432,1000)))+tcm(2053)+varset(2,msg($432,1006+msg($432,1000))-msg($432,1008+msg($432,1000)))+if(varget(1)==varget(2),varset(1,0))+msg($433,2049,varget(1))+msg($433,2936,varget(2)-varget(1)),tem(`em_>Выделите_2_объекта!`))"
WCMICONS.DLL,39
Добавить выделение файлов/папок между двумя выделенными

#658:  Author: FlasherLocation: Москва PostPosted: Wed Jul 22, 2020 21:53
    —
Пожалуй, поделюсь своим более лаконичным вариантом без передёргиваний выделения и с нормальным текстом окна ошибки:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef
if(msg(1074,msg(1074,1000)+1004)==2,msg($0B,0)+tcm(2057)+tcm(2054)+tcm(2053)+varset(1,msg(1074,1006+msg(1074,1000)))+tcm(2054)+msg(1075,2936,varget(1)-msg(1074,1006+msg(1074,1000)))+msg($0B,1)+redraw()+tcm(2918),tcm(-1,1)+eval(settext_wait("`[✖] Выделите 2 объекта!`",findwnd(Static,,findwnd(#32770)))))
wciconex.dll,73
Выделить всё в границах двух выделенных объектов
Разумеется, никаких ограничений на типы объектов (аля 'файлы/папки') нет. Т. е. работать будет как в любых виртуальных папках, так и в списках плагинов и структурах wfx-плагинов.
P. S.: Перерисовка окна не вызывает таких неприятностей, как моргания цветов, прыжков курсора со сдвигом списка туда-сюда, что в примерах выше и ниже.


Last edited by Flasher on Thu Jul 23, 2020 15:40; edited 1 time in total

#659:  Author: sa PostPosted: Thu Jul 23, 2020 15:01
    —
Укоротил вариант, что для TC версии 9.0+ и без ненужной перерисовки панелей инструментов (главной и вертикальной), панели функциональных клавиш, командной строки, а также вкладок, заголовков панели, заголовков табуляторов и др. элементов интерфейса окна TC:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "if(msg($432,1004+msg($432,1000))==2,tcm(2049)+tcm(2053)+tcm(2053)+varset(1,msg($432,1006+msg($432,1000))) +tcm(2054)+msg($433,2936,varget(1)-msg($432,1006+msg($432,1000))),tem(em_>Выделите_2_объекта!))"
WCMICONS.DLL,39
Добавить выделение файлов/папок между двумя выделенными
Если есть желание избавиться и от передёргиваний, и от ненужной перерисовки, то можно попробовать вариант,
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "if(msg($432,1004+msg($432,1000))==2,msg($0B,0)+tcm(2049)+tcm(2053)+tcm(2053) +varset(1,msg($432,1006+msg($432,1000)))+tcm(2054)+msg($433,2936,varget(1)-msg($432,1006+msg($432,1000)))+tcm(2012)+msg($0B,1)+tcm(2012),tem(em_>Выделите_2_объекта!))"
WCMICONS.DLL,39
Добавить выделение файлов/папок между двумя выделенными
где для перерисовки используется задвоенная команда 2012 (или 330).

#660:  Author: FlasherLocation: Москва PostPosted: Fri Jul 24, 2020 12:17
    —
Легкая правка моего варианта без каких-либо предложенных далее артефактов выделения и псевдодорисовки
(особенно тех, что невооружённым глазом видны и остаются при наличии на предыдущем плане браузера, например, с видео на паузе):
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef
if(msg(1074,msg(1074,1000)+1004)==2,sendmsg(msg(1074,3),$0B,0)+tcm(2057)+tcm(2054)+tcm(2053)+varset(1,msg(1074,1006+msg(1074,1000)))+tcm(2054)+msg(1075,2936,varget(1)-msg(1074,1006+msg(1074,1000)))+sendmsg(msg(1074,3),$0B,1),tcm(-1,1)+eval(settext_wait("`[✖] Выделите 2 объекта!`",findwnd(Static,,findwnd(#32770)))))
wciconex.dll,46
Выделить всё в границах двух выделенных объектов


Last edited by Flasher on Sat Jul 25, 2020 11:49; edited 1 time in total



Total Commander -> Секреты и советы


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3 ... , 43, 44, 45  Next  :| |:
Page 44 of 45

Powered by phpBB © 2001, 2005 phpBB Group