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

#46:  Author: BatyaLocation: Москва, Россия PostPosted: Mon Mar 06, 2006 16:26
    —
LocKtaR-o-DarK wrote:
лучше идеи выкладывайте...

Пожалуй, есть интересная кнопка, которой могу поделиться.
Quote:
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!

#47:  Author: LocKtaR-o-DarKLocation: Москва PostPosted: Mon Mar 06, 2006 17:01
    —
Batya
Спасибо! ломал голову над этим, так и не добился результата... Sad
Если не трудно, ссылу на lst2str и думаю в описание кнопки надо добавить то, над чем ты работал, ... в одной панели.
Можно ли такое же сделать для бесплатного аналога _WinMerge программы Compare It! ?

#48:  Author: BatyaLocation: Москва, Россия PostPosted: Mon Mar 06, 2006 17:15
    —
Утилита lst2str.

Для WinMerge синтаксис, вроде, должен быть тот же. Т.е. нужно поменять только путь к экзэшнику в параметрах кнопки и файле значка.

#49:  Author: BatyaLocation: Москва, Россия PostPosted: Mon Mar 06, 2006 17:55
    —
Еще кнопочка.
Так получается, что мне по работе часто приходится снимать признак ReadOnly с файлов. В принципе, можно для этого пользоваться и свойствами файлов, и командой изменения атрибутов в TC, но мне совсем не хотелось поднимать какие-либо диалоговые окна. Вот и написал скрипт.
Кнопка:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\WHS\RemoveReadOnly.vbs
%L
%COMMANDER_PATH%\Icons\X-Qute.icl,28
Снятие признака Read-Only


-1

Соответственно, пути к скрипту и файлу значка у вас могут свои.
Скрипт RemoveReadOnly.vbs:
Code:
'=====================================================================
' Снятие признака 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

#50:  Author: CaptainFlintLocation: Москва PostPosted: Mon Mar 06, 2006 18:36
    —
Batya
Quote:
Кнопка - сравнение файлов с помощью сторонней утилиты Compare It!

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

PS: Для более "чистого" вызова можно добавить параметр /N:2 Smile

#51:  Author: LocKtaR-o-DarKLocation: Москва PostPosted: Fri Mar 10, 2006 14:54
    —
Подтверждаю работу с WinMerge
Quote:
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


Last edited by LocKtaR-o-DarK on Mon Apr 03, 2006 10:14; edited 1 time in total

#52:  Author: LocKtaR-o-DarKLocation: Москва PostPosted: Mon Mar 13, 2006 01:43
    —
Компиляция скприпта NSIS
Code:
TOTALCMD#BAR#DATA
c:\progra~1\NSIS\makensisw
%N
c:\progra~1\NSIS\makensisw.exe
Компилировать NSIS


Last edited by LocKtaR-o-DarK on Mon Apr 03, 2006 10:15; edited 1 time in total

#53:  Author: BatyaLocation: Москва, Россия PostPosted: Mon Mar 13, 2006 13:46
    —
Выше я описал, как принудительно снять атрибут у файлов.
Теперь есть задача:
Нужно файлам присваивать атрибут – скрытый, без лишних вопросов.
Во-первых, возможные атрибуты (можно изменить описанный ниже скрипт):
Code:
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.


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


-1


Скрипт SetHidden.vbs:
Code:
'=====================================================================
' Установка признака 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

#54:  Author: VolniyLocation: Местный PostPosted: Mon Mar 13, 2006 22:30
    —
Batya, извини, но сильно режет глаз вот это
Code:
If Not (f.Attributes and Attr) Then
      f.Attributes = f.Attributes + Attr
End If


А не лучше ли вот так будет все это написать
Code:
f.Attributes = f.Attributes Or Attr

Операция OR корректно устанавливает атрибут вне зависимости от того присвоен ли он уже или нет (а And Not - снимает его так же корректно).

#55:  Author: BatyaLocation: Москва, Россия PostPosted: Tue Mar 14, 2006 11:26
    —
Volniy
Ооо... Спасибо большое! Буду знать (я редко работал с битовыми комбинациями).

#56:  Author: ZorrozLocation: Россия, Иркутская обл., г. Ангарск PostPosted: Tue Mar 14, 2006 16:15
    —
2Batya
Спасибо за скрипт!!! Файлы скрываются, все ОК.
Но он не работает на папках, почему-то.

#57:  Author: BatyaLocation: Москва, Россия PostPosted: Tue Mar 14, 2006 17:27
    —
Zorroz wrote:
2Batya
Спасибо за скрипт!!! Файлы скрываются, все ОК.
Но он не работает на папках, почему-то.

А я для папок и не менял атрибуты. Только для файлов в них.
Если это надо, то кнопка:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\WHS\SetAttr.vbs
%L 2
%COMMANDER_PATH%\Icons\X-Qute.icl,28
Установка атрибута "Скрытый"


-1


Скрипт (немного поправленный и обобщенный) SetAttr.vbs:
Code:
'=====================================================================
' Установка атрибута у отмеченных файлов и папок (файлов в них)

' В параметрах вызова из 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


Last edited by Batya on Tue Mar 14, 2006 17:38; edited 1 time in total

#58:  Author: BatyaLocation: Москва, Россия PostPosted: Tue Mar 14, 2006 17:35
    —
Для снятия атрибута кнопка:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\WHS\RemoveAttr.vbs
%L 2
%COMMANDER_PATH%\Icons\X-Qute.icl,28
Снятие атрибута "Скрытый"


-1


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

' В параметрах вызова из 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

#59:  Author: ZorrozLocation: Россия, Иркутская обл., г. Ангарск PostPosted: Wed Mar 15, 2006 12:35
    —
Кнопочка для резервного копирования файлов перечисленных в «c:\totalcmd\Plugins\Script\backup\totalcmd.txt» в «E:\Мои Документы\Я-Copy\totalcmd\». Причем имя файла выглядит как день.месяц.год.

Code:
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 в плане скорости?


Last edited by Zorroz on Wed May 17, 2006 04:18; edited 1 time in total

#60:  Author: iov PostPosted: Wed Mar 15, 2006 19:49
    —
Batya
Quote:
А у тебя в параметре /X у winmerge расширение не указано.
Эти грабли я сразу отложил подальше, только вот с %COMMANDER_PATH% беда, попробовал лечить примерно так
Code:

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 !!
Так! Я ночью в поле и кругом грабли!! Crying or Very sad

Желаемая кнопка! ( не пашет!)
Code:
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, но это не решение проблемы а только способ её устранения!
в таком виде всё прекрасно работает!
Code:
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



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


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

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

Powered by phpBB © 2001, 2005 phpBB Group