Добавление выделенных файлов в список исключений

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

svshilo
Сообщения: 12
Зарегистрирован: Пт окт 01, 2010 02:54

Добавление выделенных файлов в список исключений

Сообщение svshilo »

Не нашёл на форуме подобного вопроса, может не правильно искал, хз.
1) Вопрос, можно ли сделать кнопку, чтобы при её нажатии выделенные в любой из панелей файлы добавлялись в список исключений без путей (чтобы на всех компах работало)?
Долго гадал в какой раздел запостить тему, то ли в кнопки, то ли сюда.
Предполагаю, что это можно сделать только с помощь скриптов, поэтом разместил тему здесь.

2) Как сделать кнопку, включающую/отключающую список исключений? Я нашёл только как открыть сам диалог настройки исключений cm_IgnoreConfig, а вот как эмулировать установку галочки "Исключить (не показывать) следующие файлы и каталоги:"
Последний раз редактировалось svshilo Сб июл 16, 2011 16:16, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

1) сделать несложно (позже)
2) cm_SwitchIgnoreList
svshilo
Сообщения: 12
Зарегистрирован: Пт окт 01, 2010 02:54

Сообщение svshilo »

Flasher писал(а):2) cm_SwitchIgnoreList
Спасибо..
Блин, и всего то.
Смотрел там же, где и cm_IgnoreList, а это вообще вменю Вид. Уже и забыл, что в виде есть этот пункт. Тупанул, надо было фильтр общий по Ignore врубить.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

svshilo
В общем-то, тут просто:

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

'  Добавление имён выделенных файлов/папок в список исключений TC
'  Параметры: %F "<путь к файлу-списку>"
'  Пример: %F "%%COMMANDER_PATH%%\tcignore.txt"
'===========================================
L = CreateObject("WScript.Shell").ExpandEnvironmentStrings(WScript.Arguments(1))
With CreateObject("Scripting.FileSystemObject")
  Set TempFile = .OpenTextFile(WScript.Arguments(0),1)
  Set List = .OpenTextFile(L,8,True)
  List.Write TempFile.ReadAll
  List.Close
End With
Без перезапуска TC фильтр не сработает. Нужен?
Хотя есть один способ без перезапуска, он мне не очень нравится, хоть и работает:
' Добавление имён выделенных файлов в список исключений TC с активацией фильтра
' Параметры: %F "<путь к файлу-списку>"
' Пример: %F "%%COMMANDER_PATH%%\tcignore.txt"

'===========================================

Dim WSH
Set WSH = CreateObject("WScript.Shell")
L = WSH.ExpandEnvironmentStrings(WScript.Arguments(1))
With CreateObject("Scripting.FileSystemObject")
Set TempFile = .OpenTextFile(WScript.Arguments(0),1)
Set List = .OpenTextFile(L,8,True)
List.Write TempFile.ReadAll
List.Close
End With
WSH.Exec "
%COMMANDER_PATH%\Utils\TCMC\TCMC.exe CM480"
WScript.Sleep 20
WSH.SendKeys "{TAB 2} {BS}+{TAB} ~"
Set WSH = Nothing
WScript.Quit
Путь, выделенный красным, к утилите TCMC должен соответствовать скриптовому.
svshilo
Сообщения: 12
Зарегистрирован: Пт окт 01, 2010 02:54

Сообщение svshilo »

Flasher писал(а):
Спасибо огромное, первый код работает.
Правда у меня уже были в игноре строки и при первом добавлении файлов с помощью скрипта он склелил последнюю мою строку и первую его, но это ерунда.
Для теста сделал:
Do.smerti.krasiva.2.sezon.04.serija.iz.13.2010.avi - это была моя строка
Do.smerti.krasiva.2.sezon.04.serija.iz.13.2010.aviPererabotka-Resiklo-DVDRip_2007_MVO.avi
IO.SYS
MSDOS.SYS
NTDETECT.COM
ntldr
pagefile.sys
MSOCache\
но все остальные, добавляемые с помощью скрипта, имена не склеиваются, всё нормально.
Перезагружать тотал не обязательно, достаточно нажать/отжать добавленную по вашему совету кн. cm_SwitchIgnoreList.

Второй код пока не проверял. Чем он плох? Тем, что требует дополнительной утилиты?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

svshilo
Он плох тем, что там задействована имитация нажатия клавиш. Иногда это влечёт непредстказуемые действия, если работать в разных условиях. Утилита - не проблема, она для портабельности.
svshilo писал(а):достаточно нажать/отжать .. cm_SwitchIgnoreList
Действительно, что это я. :shock: Завтра поправлю второй скрипт. Там достаточно проверять по ключу IgnoreListFileEnabled, чтобы верно срабатывало.
svshilo
Сообщения: 12
Зарегистрирован: Пт окт 01, 2010 02:54

Сообщение svshilo »

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

Первый скрипт меня очень даже устраивает, уже применяю, ещё раз спасибо. А можно в нём эмулировать откл/вкл cm_SwitchIgnoreList или чтобы он проверял значения этого ключа, и если отключен - включал?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

svshilo писал(а):но каждый раз отключает сам игнор
Странно. А если в третьей строке снизу убрать последний пробел?: WSH.SendKeys "{TAB 2} {BS}+{TAB}~"
svshilo писал(а):А можно в нём эмулировать откл/вкл cm_SwitchIgnoreList или чтобы он проверял значения этого ключа, и если отключен - включал?
Я сейчас попытался это сделать с помощью TCFS2 -

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

WSH.Exec"%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe ""/ef  tcm(2922) tcm(2922), test(tcini(Configuration,IgnoreListFileEnabled,#)=1) | tcm(2922)"""
, но почему-то это не срабатывает, завтра ещё поковыряюсь.
svshilo
Сообщения: 12
Зарегистрирован: Пт окт 01, 2010 02:54

Сообщение svshilo »

пробел удалил, всё работает, только каспер вякает, подозревает рутшел, но это не страшно, добавил скрипт в исключения
svshilo
Сообщения: 12
Зарегистрирован: Пт окт 01, 2010 02:54

Сообщение svshilo »

притащил домой TC Multiple Commands 0.12, здесь Смарт секьюрити стоит - сразу валит этоту прогу на корню и всё, говорит

addAdd_TC.Multiple.Commands_0.12.zip вероятно модифицированный Win32/Agent.IYZQUN троянская программа

Эта прога точно не с вирусом? А то и нод на неё гавкает, и каспер.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

svshilo
Советую проще относиться к антивирусам, они много на что ругаются, сигнатуры такие, поэтому дома я ими не пользуюсь. :wink: Вот здесь на утилиту много детектов, а Каспер таки ничего не нашёл. Данный вопрос обсуждать тут больше не советую. Этой утилитой пользуются многие толковые граждане (и не только с этого форума).
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

svshilo
Ругань некоторых антивирусов на TCMC.exe давно известна и на разных форумах рассматривалась многократно. Это ложные срабатывания, утилита абсолютно безопасна. Если интересны подробности, советую, например, почитать здесь (первый мой пост).
Последний раз редактировалось Avada Ср апр 24, 2013 10:14, всего редактировалось 1 раз.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

svshilo
Окончательный вариант такой:

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

'  Добавление имён выделенных файлов в список исключений TC с активацией фильтра
'  Параметры: %F "<путь к файлу-списку>"
'  Пример: %F "%%COMMANDER_PATH%%\tcignore.txt"
'===========================================================
Dim WSH
Set WSH = CreateObject("WScript.Shell")
L = WSH.ExpandEnvironmentStrings(WScript.Arguments(1))
With CreateObject("Scripting.FileSystemObject")
  Set TempFile = .OpenTextFile(WScript.Arguments(0),1)
  Set List = .OpenTextFile(L,8,True)
  List.Write TempFile.ReadAll
  List.Close
End With  
WSH.Exec"%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef ""tcm(2922) tcm(2922), test(tcini(Configuration, IgnoreListFileEnabled, #)) | tcm(2922)"""
Set WSH = Nothing
WScript.Quit
В данном случае надо использовать TCFS2 с соответствующим в скрипте путём.
svshilo
Сообщения: 12
Зарегистрирован: Пт окт 01, 2010 02:54

Сообщение svshilo »

Flasher
Спасибо, всё работает, тему можно закрыть.
Чем этот вариант лучше предыдущего, тем, что здесь не используется эмуляция нажатий клавиш?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

svshilo
Помимо указанного нет мелькания окна, да и скорость срабатывания побыстрее. А имитация подходила только для одного режима (вкл./выкл.), поэтому я и предложил убрать пробел.
Ответить