Кнопка - сравнение файлов с помощью сторонней утилиты Compare It! Если в текущей панели выделено более одного файла, то сравниваются первый и второй файлы. Если выделен только один или нет выделенных, то сравнивается файл под курсором с текущем файлом на противоположной панели (текущий - это тот, на котором стоит курсор, если нажать Tab (перейти на панель)).
Здесь цветами: Синий - утилита lst2str от Гислера, которая передает указанной в параметрах программе в качестве параметров список выделенных файлов через пробел; Зеленый - утилита Compare It!
Batya
Спасибо! ломал голову над этим, так и не добился результата...
Если не трудно, ссылу на lst2str и думаю в описание кнопки надо добавить то, над чем ты работал, ... в одной панели.
Можно ли такое же сделать для бесплатного аналога _WinMerge программы Compare It! ?
Еще кнопочка.
Так получается, что мне по работе часто приходится снимать признак ReadOnly с файлов. В принципе, можно для этого пользоваться и свойствами файлов, и командой изменения атрибутов в TC, но мне совсем не хотелось поднимать какие-либо диалоговые окна. Вот и написал скрипт.
Кнопка:
'=====================================================================
' Снятие признака 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
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 раз.
Выше я описал, как принудительно снять атрибут у файлов.
Теперь есть задача:
Нужно файлам присваивать атрибут – скрытый, без лишних вопросов.
Во-первых, возможные атрибуты (можно изменить описанный ниже скрипт):
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.
'=====================================================================
' Установка признака 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
'=====================================================================
' Установка атрибута у отмеченных файлов и папок (файлов в них)
' В параметрах вызова из 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 раз.
'=====================================================================
' Снятие атрибута с отмеченных файлов и папок (файлов в них)
' В параметрах вызова из 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
Кнопочка для резервного копирования файлов перечисленных в «c:\totalcmd\Plugins\Script\backup\totalcmd.txt» в «E:\Мои Документы\Я-Copy\totalcmd\». Причем имя файла выглядит как день.месяц.год.
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