Обмен кнопками

Если вы хотите поделиться с другими пользователями секретами Total Commander, знаете интересные опции, приемы, настройки, то вам сюда.

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

Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

LocKtaR-o-DarK писал(а): лучше идеи выкладывайте...
Пожалуй, есть интересная кнопка, которой могу поделиться.
TOTALCMD#BAR#DATA
d:\TotalCmd\Utils\Lst2Str\lst2str.exe
/X:"d:\Program Files\Compare It!\wincmp3.exe" /L:%L /F:%T%M
d:\progra~1\compar~1\wincmp3.exe
Сравнение файлов


-1
Кнопка - сравнение файлов с помощью сторонней утилиты Compare It! Если в текущей панели выделено более одного файла, то сравниваются первый и второй файлы. Если выделен только один или нет выделенных, то сравнивается файл под курсором с текущем файлом на противоположной панели (текущий - это тот, на котором стоит курсор, если нажать Tab (перейти на панель)).

Здесь цветами:
Синий - утилита lst2str от Гислера, которая передает указанной в параметрах программе в качестве параметров список выделенных файлов через пробел;
Зеленый - утилита Compare It!
Аватара пользователя
LocKtaR-o-DarK
Сообщения: 349
Зарегистрирован: Пт авг 12, 2005 04:20
Откуда: Москва
Контактная информация:

Сообщение LocKtaR-o-DarK »

Batya
Спасибо! ломал голову над этим, так и не добился результата... :(
Если не трудно, ссылу на lst2str и думаю в описание кнопки надо добавить то, над чем ты работал, ... в одной панели.
Можно ли такое же сделать для бесплатного аналога _WinMerge программы Compare It! ?
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Утилита lst2str.

Для WinMerge синтаксис, вроде, должен быть тот же. Т.е. нужно поменять только путь к экзэшнику в параметрах кнопки и файле значка.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Еще кнопочка.
Так получается, что мне по работе часто приходится снимать признак ReadOnly с файлов. В принципе, можно для этого пользоваться и свойствами файлов, и командой изменения атрибутов в TC, но мне совсем не хотелось поднимать какие-либо диалоговые окна. Вот и написал скрипт.
Кнопка:

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\WHS\RemoveReadOnly.vbs
%L
%COMMANDER_PATH%\Icons\X-Qute.icl,28
Снятие признака Read-Only


-1
Соответственно, пути к скрипту и файлу значка у вас могут свои.
Скрипт RemoveReadOnly.vbs:

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

'=====================================================================
' Снятие признака Read-Only с отмеченных файлов и папок (файлов в них)

' В параметрах вызова из TC должно быть прописано:
' %L
'=====================================================================

Dim FSO, StreamFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set StreamFile = FSO.OpenTextFile(WScript.Arguments(0), 1)

Dim Selected, CurrFile, CurrFolder
Do While Not StreamFile.AtEndOfStream
  Selected = StreamFile.ReadLine
  If FSO.FileExists(Selected) Then
    Set CurrFile = FSO.GetFile(Selected)
    If CurrFile.Attributes and 1 Then
      CurrFile.Attributes = CurrFile.Attributes - 1
    End If
  End If
  If FSO.FolderExists(Selected) Then
    Set CurrFolder = FSO.GetFolder(Selected)
    FolderProcess(CurrFolder)
  End If
Loop
'MsgBox("Выполнено!")
Wscript.Quit()

Function FolderProcess(CurrFolder)
  Dim sf, f
  For Each sf in CurrFolder.SubFolders
    FolderProcess(sf)
  Next
  For Each f in CurrFolder.Files
    If f.Attributes and 1 Then
      f.Attributes = f.Attributes - 1
    End If
  Next
End Function
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Batya
Кнопка - сравнение файлов с помощью сторонней утилиты Compare It!
О, а вот за это респект! Compare It! я себе уже давно прикрутил, но как его вызывать для выделенных файлов, не продумал. Спасибо!

PS: Для более "чистого" вызова можно добавить параметр /N:2 :)
Аватара пользователя
LocKtaR-o-DarK
Сообщения: 349
Зарегистрирован: Пт авг 12, 2005 04:20
Откуда: Москва
Контактная информация:

Сообщение LocKtaR-o-DarK »

Подтверждаю работу с WinMerge
TOTALCMD#BAR#DATA
путь_к_
lst2str
/X:c:\progra~1\winmerge\winmerge /L:%L /F:%T%M /N:2
c:\progra~1\winmerge\winmerge.exe,1
Сравнение двух файлов в одной панели WinMerge
Последний раз редактировалось LocKtaR-o-DarK Пн апр 03, 2006 10:14, всего редактировалось 1 раз.
Аватара пользователя
LocKtaR-o-DarK
Сообщения: 349
Зарегистрирован: Пт авг 12, 2005 04:20
Откуда: Москва
Контактная информация:

Сообщение LocKtaR-o-DarK »

Компиляция скприпта NSIS

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

TOTALCMD#BAR#DATA
c:\progra~1\NSIS\makensisw
%N
c:\progra~1\NSIS\makensisw.exe
Компилировать NSIS
Последний раз редактировалось LocKtaR-o-DarK Пн апр 03, 2006 10:15, всего редактировалось 1 раз.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Выше я описал, как принудительно снять атрибут у файлов.
Теперь есть задача:
Нужно файлам присваивать атрибут – скрытый, без лишних вопросов.
Во-первых, возможные атрибуты (можно изменить описанный ниже скрипт):

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

Normal        0     Normal file. No attributes are set.
ReadOnly      1     Read-only file. Attribute is read/write.
Hidden        2     Hidden file. Attribute is read/write.
System        4     System file. Attribute is read/write.
Volume        8     Disk drive volume label. Attribute is read-only.
Directory    16     Folder or directory. Attribute is read-only.
Archive      32     File has changed since last backup. Attribute is read/write.
Alias        64     Link or shortcut. Attribute is read-only.
Compressed  128     Compressed file. Attribute is read-only.
Теперь кнопка:

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

TOTALCMD#BAR#DATA 
%COMMANDER_PATH%\Utils\WHS\SetHidden.vbs
%L 
%COMMANDER_PATH%\Icons\X-Qute.icl,28 
Снятие признака Read-Only 


-1 


Скрипт SetHidden.vbs:

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

'=====================================================================
' Установка признака Hidden у отмеченных файлов и папок (файлов в них)

' В параметрах вызова из TC должно быть прописано:
' %L
'=====================================================================

Dim FSO, StreamFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set StreamFile = FSO.OpenTextFile(WScript.Arguments(0), 1)

Dim Selected, CurrFile, CurrFolder, Attr
Attr = 2 ' Атрибут "Hidden"
Do While Not StreamFile.AtEndOfStream
  Selected = StreamFile.ReadLine
  If FSO.FileExists(Selected) Then
    Set CurrFile = FSO.GetFile(Selected)
    If Not (CurrFile.Attributes and Attr) Then
      CurrFile.Attributes = CurrFile.Attributes + Attr
    End If
  End If
  If FSO.FolderExists(Selected) Then
    Set CurrFolder = FSO.GetFolder(Selected)
    FolderProcess(CurrFolder)
  End If
Loop
'MsgBox("Выполнено!")
Wscript.Quit()

Function FolderProcess(CurrFolder)
  Dim sf, f
  For Each sf in CurrFolder.SubFolders
    FolderProcess(sf)
  Next
  For Each f in CurrFolder.Files
    If Not (f.Attributes and Attr) Then
      f.Attributes = f.Attributes + Attr
    End If
  Next
End Function
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Batya, извини, но сильно режет глаз вот это

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

If Not (f.Attributes and Attr) Then 
      f.Attributes = f.Attributes + Attr 
End If
А не лучше ли вот так будет все это написать

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

f.Attributes = f.Attributes Or Attr
Операция OR корректно устанавливает атрибут вне зависимости от того присвоен ли он уже или нет (а And Not - снимает его так же корректно).
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Volniy
Ооо... Спасибо большое! Буду знать (я редко работал с битовыми комбинациями).
Аватара пользователя
Zorroz
Сообщения: 308
Зарегистрирован: Чт дек 16, 2004 10:40
Откуда: Россия, Иркутская обл., г. Ангарск

Сообщение Zorroz »

2Batya
Спасибо за скрипт!!! Файлы скрываются, все ОК.
Но он не работает на папках, почему-то.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Zorroz писал(а):2Batya
Спасибо за скрипт!!! Файлы скрываются, все ОК.
Но он не работает на папках, почему-то.
А я для папок и не менял атрибуты. Только для файлов в них.
Если это надо, то кнопка:

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\WHS\SetAttr.vbs
%L 2
%COMMANDER_PATH%\Icons\X-Qute.icl,28
Установка атрибута "Скрытый"


-1
Скрипт (немного поправленный и обобщенный) SetAttr.vbs:

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

'=====================================================================
' Установка атрибута у отмеченных файлов и папок (файлов в них)

' В параметрах вызова из TC должно быть прописано:
' %L {битовый флаг атрибута}
' например, для атрибута "Hidden" ("Скрытый"):
' %L 2
'=====================================================================

Dim FSO, StreamFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set StreamFile = FSO.OpenTextFile(WScript.Arguments(0), 1)

Dim Selected, CurrFile, CurrFolder, Attr
Attr = WScript.Arguments(1)
Do While Not StreamFile.AtEndOfStream
  Selected = StreamFile.ReadLine
  If FSO.FileExists(Selected) Then
    Set CurrFile = FSO.GetFile(Selected)
    CurrFile.Attributes = CurrFile.Attributes Or Attr
  End If
  If FSO.FolderExists(Selected) Then
    Set CurrFolder = FSO.GetFolder(Selected)
    CurrFolder.Attributes = CurrFolder.Attributes Or Attr
    FolderProcess(CurrFolder)
  End If
Loop
'MsgBox("Выполнено!")
Set FSO        = Nothing
Set StreamFile = Nothing
Set CurrFile   = Nothing
Set CurrFolder = Nothing
Wscript.Quit()

Function FolderProcess(CurrFolder)
  Dim sf, f
  For Each sf in CurrFolder.SubFolders
    sf.Attributes = sf.Attributes Or Attr
    FolderProcess(sf)
  Next
  For Each f in CurrFolder.Files
    f.Attributes = f.Attributes Or Attr
  Next
End Function
Последний раз редактировалось Batya Вт мар 14, 2006 16:38, всего редактировалось 1 раз.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Для снятия атрибута кнопка:

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\WHS\RemoveAttr.vbs
%L 2
%COMMANDER_PATH%\Icons\X-Qute.icl,28
Снятие атрибута "Скрытый"


-1
Скрипт RemoveAttr.vbs:

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

'=====================================================================
' Снятие атрибута с отмеченных файлов и папок (файлов в них)

' В параметрах вызова из TC должно быть прописано:
' %L {битовый флаг атрибута}
' например, для атрибута "Hidden" ("Скрытый"):
' %L 2
'=====================================================================

Dim FSO, StreamFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set StreamFile = FSO.OpenTextFile(WScript.Arguments(0), 1)

Dim Selected, CurrFile, CurrFolder, Attr
Attr = WScript.Arguments(1)
Do While Not StreamFile.AtEndOfStream
  Selected = StreamFile.ReadLine
  If FSO.FileExists(Selected) Then
    Set CurrFile = FSO.GetFile(Selected)
    CurrFile.Attributes = CurrFile.Attributes And Not Attr
  End If
  If FSO.FolderExists(Selected) Then
    Set CurrFolder = FSO.GetFolder(Selected)
    CurrFolder.Attributes = CurrFolder.Attributes And Not Attr
    FolderProcess(CurrFolder)
  End If
Loop
'MsgBox("Выполнено!")
Set FSO        = Nothing
Set StreamFile = Nothing
Set CurrFile   = Nothing
Set CurrFolder = Nothing
Wscript.Quit()

Function FolderProcess(CurrFolder)
  Dim sf, f
  For Each sf in CurrFolder.SubFolders
    sf.Attributes = sf.Attributes And Not Attr
    FolderProcess(sf)
  Next
  For Each f in CurrFolder.Files
    f.Attributes = f.Attributes And Not Attr
  Next
End Function
Аватара пользователя
Zorroz
Сообщения: 308
Зарегистрирован: Чт дек 16, 2004 10:40
Откуда: Россия, Иркутская обл., г. Ангарск

Сообщение Zorroz »

Кнопочка для резервного копирования файлов перечисленных в «c:\totalcmd\Plugins\Script\backup\totalcmd.txt» в «E:\Мои Документы\Я-Copy\totalcmd\». Причем имя файла выглядит как день.месяц.год.

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

TOTALCMD#BAR#DATA
C:\Program Files\WinRAR\WinRAR.exe
a -m1 -agYYYY.MM.DD "E:\Мои Документы\Я-Copy\totalcmd\" @c:\totalcmd\Plugins\Script\backup\totalcmd.txt
C:\totalcmd\TOTALCMD.EXE
backup totalcmd
C:\Program Files\WinRAR\

-1
Вопрос! А что лучше использовать WinRAR.exe или Rar.exe в плане скорости?
Последний раз редактировалось Zorroz Ср май 17, 2006 04:18, всего редактировалось 1 раз.
Аватара пользователя
iov
Сообщения: 51
Зарегистрирован: Ср мар 16, 2005 23:44

Сообщение iov »

Batya
А у тебя в параметре /X у winmerge расширение не указано.
Эти грабли я сразу отложил подальше, только вот с %COMMANDER_PATH% беда, попробовал лечить примерно так

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

TOTALCMD#BAR#DATA 
%COMMANDER_PATH%\Utils\Lst2Str\lst2str.exe 
/X:"..\winmerge\winmerge.exe" 
/L:%L /F:%T%M /N:2 
%COMMANDER_PATH%\Utils\winmerge\winmerge.exe 
Сравнение файлов 


-1
Всё бы хорошо, только вот если сравнивать файлы ниже корня total !!
Так! Я ночью в поле и кругом грабли!! :cry:

Желаемая кнопка! ( не пашет!)

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TCplugins\lst2str\lst2str.exe
/X:"%COMMANDER_PATH%\Programm\!_Text&Office\WinMerge\WinMerge.exe" /L:%L /F:%T%M /N:2
%COMMANDER_PATH%\Programm\!_Text&Office\WinMerge\WinMerge.exe
Сравнение двух файлов в одной панели WinMerge


-1
lst2str случаем не обновлялась?
Пробовал на XP и 2003 сервере! Кроме этого косяков нет! Total как часы (плагины бывает и глючат , но работают)

Блин пока придётся кидать к каждой проге lst2str.exe, но это не решение проблемы а только способ её устранения!
в таком виде всё прекрасно работает!

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

TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\Programm\!_Text&Office\WinMerge\lst2str.exe"
/X:"WinMerge.exe" /L:%L /F:%T%M /N:2
%COMMANDER_PATH%\Programm\!_Text&Office\WinMerge\WinMerge.exe
Сравнение двух файлов в одной панели WinMerge


-1
Ответить