Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Произвольная фильтрация 
Author Message
sa



PostPosted: Thu Nov 04, 2010 14:10    Post subject: Reply with quote

Mangust88 wrote:
Не эстетично )
Согласен.

Mangust88 wrote:
К тому же работает одновременно только для одной вкладки
Простейшим решением вопроса будет не затирание временного списка исключений постоянным при каждом вызове скрипта (как сейчас), а его очередное пополнение. Удаляться временный список в таком случае будет либо вызовом скрипта при отсутствии невыделенных файлов, либо “ручками”. (Замечу что, если его не удалить, то и при новом сеансе ТК скрипт будет пополнять именно его, а не существующий постоянный список).
Привожу скрипт для рассматриваемого варианта:
Code:
'  File:         IgnoreTempListAdd.vbs
'  Description:  Формирует временный список исключений из невыделенных в панели
'    файлов/каталогов. Если временный список исключений (tempignore.txt) отсутствует,
'    а постоянный список (по умолчанию - tcignore.txt) имеется, то постоянный список
'    добавляется в начало создаваемого временного списка.
'    При наличии временного списка исключений он (временный список) только пополняется
'    невыделенными в панели файлами/каталогами, без какой-либо проверки актуальности
'    строк постоянного списка в нём.   
'     Способы прекращения действия временного списка исключений:
'    а) вызвать скрипт при отсутствии невыделенных файлов, то есть, если выделены все
'    или выделять нечего (файл временного списка при этом удаляется),
'    б) вызвать внутреннюю команду "Использовать список исключений файловых имён: вкл/выкл"
'    (два или один раз, в зависимости от желания/нежелания использовать постоянный список
'    исключений),   
'    в) закончить сеанс TC.
'    В вариантах б) и в) файл временного списка не удаляется и используется
'    при очередном вызове скрипта в том же или новом сеансе TC.
'  Parameters:   Нет
'  Requirements: WSH Helper for TC by Volniy
'  Installation: Создайте для скрипта, например, кнопку на панели инструментов TC
'  Autor:        sa

Option Explicit
Dim WSH, FSO, TCS, IgFile, IgTempFile, IgPath, IgPathExp, IgEnabled, MsgStr, S, S_exp, F1, IgSize, MsgMode
Set WSH = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TCS = CreateObject("TCScript.Helper")
'========== Изменяемые параметры ===============================================
'Режим информационных сообщений: 2 -назойливый, 1 -щадящий, 0 -без сообщений
MsgMode = 1
'===============================================================================
TCS.LockTC True
IgFile = "tcignore.txt"
IgTempFile = "tempignore.txt"
IgPath = "%COMMANDER_PATH%\"
IgPathExp = TCS.TCPath & "\"
IgEnabled = TCS.INIRead (TCS.MainINI, "Configuration", "IgnoreListFileEnabled", 0)
MsgStr = ""
IgSize = 0
S = TCS.INIRead (TCS.MainINI, "Configuration", "IgnoreListFile", 0)
S_exp = WSH.ExpandEnvironmentStrings(S)
If FSO.FileExists(S_exp) Then
  IgPath = Left(S, InStrRev(S,"\"))
  IgPathExp = Left(S_exp, InStrRev(S_exp,"\"))
  IgFile = Right(S,len(S)-len(IgPath))
  IgSize =  FSO.GetFile(S_exp).size
else
  Set F1 = FSO.CreateTextFile(IgPathExp & IgFile, True)
  F1.Close
  Set F1 = Nothing
end if
TCS.SendCommand (3321) 'cm_ExchangeSelBoth
TCS.SendCommand (530) 'cm_SaveSelection
TCS.SendCommand (480) 'cm_IgnoreConfig
TCS.SendKeystroke "+{TAB 6}{ENTER}010{ENTER}{LEFT}{TAB 4}{ENTER}"
if FSO.GetBaseName(TCS.INIRead (TCS.MainINI, "Configuration", "IgnoreListFile", 0)) = "010" then
  if IgEnabled = 0 then MsgStr = "Задействована функция исключений файловых имён."
  if not FSO.FileExists(IgPathExp & IgTempFile) then
    FSO.CopyFile IgPathExp & IgFile, IgPathExp & IgTempFile
    MsgStr = MsgStr & chr(13) & "Создан и применён временный список исключений."
  else
    if MsgMode = 2 then MsgStr = MsgStr & chr(13) & "Временный список исключений пополнен и применён."
  end if
  TCS.INIWrite TCS.MainINI , "Configuration", "IgnoreListFile", IgPath & IgTempFile
  TCS.SendCommand (529) 'cm_RestoreSelection
  TCS.SendCommand (480) 'cm_IgnoreConfig
  TCS.SendKeystroke "+{TAB 5}{ENTER}{TAB 2}{ENTER}"
  TCS.INIWrite TCS.MainINI, "Configuration", "IgnoreListFile", IgPath & IgFile
else
  MsgStr = "Невыделенных файлов/каталогов не найдено."
  if FSO.FileExists(IgPathExp & IgTempFile) then
    FSO.DeleteFile(IgPathExp & IgTempFile)
    MsgStr = MsgStr & chr(13) & "Временный список исключений удалён."
  end if
  if IgEnabled = 1 then
    TCS.SendCommand (2922) 'cm_SwitchIgnoreList
    if IgSize > 0 then
      TCS.SendCommand (2922) 'cm_SwitchIgnoreList
      MsgStr = MsgStr & chr(13) & "Используется постоянный список исключений."
    else
      MsgStr = MsgStr & chr(13) & "Действие функции исключений файловых имён прекращено."
    end if
  end if
end if
if MsgMode > 0 and MsgStr <> "" then MsgBox MsgStr, vbSystemModal, "IgnoreTempListAdd.vbs"
TCS.LockTC False
Set WSH = Nothing
Set FSO = Nothing
Set TCS = Nothing
Wscript.Quit


Last edited by sa on Wed Nov 10, 2010 13:55; edited 3 times in total
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group