Поиск удобной программы для сравнения файлов
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Программное обеспечение

#1:  Author: НикLocation: Москва PostPosted: Tue Jun 19, 2007 16:34
    —
Народ, посоветуйте, плз, хороший внешний сравниватель для TXT-HTML-XML файлов для использования вместе с ТК...
Бесплатный, лучше опенсурс.

#2:  Author: Alextp PostPosted: Tue Jun 19, 2007 16:58
    —
AptDiff :
Сам не пробовал.

#3:  Author: НикLocation: Москва PostPosted: Tue Jun 19, 2007 18:03
    —
Пока что:
Compare It! - платная
CSDiff - не видит Уникода в бесплатной версии
ExamDiff - глючит с XML - всё в одну строчку
FC (встроенная в Windows) - консольная
AptDiff - глючит с XML - всё в одну строчку и не видит Уникод

Может файлы для сравнения не те?

#4:  Author: Стас АгарковLocation: Белгород PostPosted: Tue Jun 19, 2007 19:07
    —
А мне еще хотелось бы найти сравниватель DOC-файлов Word-а. Неудобно их для этого в TXT сохранять.

#5:  Author: НикLocation: Москва PostPosted: Tue Jun 19, 2007 19:50
    —
В MS Word встроена функция сравнения Smile

#6:  Author: CaptainFlintLocation: Москва PostPosted: Tue Jun 19, 2007 21:04
    —
Обсуждение выделено из ветки Сравнение файлов.

По теме обсуждения:
Стас Агарков wrote:
А мне еще хотелось бы найти сравниватель DOC-файлов Word-а. Неудобно их для этого в TXT сохранять.

Я лично пользуюсь Compare It!-ом. Очень удобная программа, в числе прочего поддерживает юникод и позволяет сравнивать DOC-файлы. Конечно, платная, но довольно дешёвая, особенно для русских (250 рублёв, кажись).

#7:  Author: fundukLocation: Санкт-Петербург PostPosted: Tue Jun 19, 2007 22:03
    —
Quote:
Обсуждение выделено из ветки Сравнение файлов.
А в тот ли форум выделил? Rolling Eyes

#8:  Author: CaptainFlintLocation: Москва PostPosted: Tue Jun 19, 2007 22:26
    —
funduk wrote:
А в тот ли форум выделил?

Второпях делал... Smile

Переношу в ПО.

#9:  Author: Alextp PostPosted: Wed Jun 20, 2007 09:39
    —
WinMerge is an open Source visual differencing and merging tool
WinMerge is an Open Source visual text file differencing and merging tool for Win32 platforms.

WinMerge is highly useful for determing what has changed between project versions, and then merging the changes between versions.

Here are some key features of "WinMerge":

· Visual differencing and merging of text files
· Flexible editor with syntax highlighting
· Handles DOS, UNIX and MAC text file formats
· Unicode support
...

#10:  Author: Veet PostPosted: Wed Jun 20, 2007 10:43
    —
WinMerge - г@@но, Compare It круче будет. Только как его к тоталу подрубить?

#11:  Author: НикLocation: Москва PostPosted: Wed Jun 20, 2007 11:23
    —
Alextp
Спасибо, похоже - то, что надо Smile

Единственная проблема - при просмотре XML никак не могу заставить переносить строки показываемого куска - чтобы вместить в экран. Упорно всё показывает в одну огромную строку - очень тяжело просматривать. Может я какие настройки проглядел?

#12:  Author: Veet PostPosted: Wed Jun 20, 2007 11:32
    —
Люди, подскажите плз, как внешней сравнилке файлов передать имена файлов для сравнения? Запуск внешней сравнилки я закинул пока в меню пуск. Сапсибо

#13:  Author: НикLocation: Москва PostPosted: Wed Jun 20, 2007 12:40
    —
Частично так:
http://tckb.megabyte-web.ru/content/view/279/51/

Есть ещё ключ настроек "CompareTool=", но как с ним работать - я так и не понял...

#14:  Author: CaptainFlintLocation: Москва PostPosted: Wed Jun 20, 2007 13:33
    —
Veet wrote:
Только как его к тоталу подрубить?

Ник wrote:
Частично так:
http://tckb.megabyte-web.ru/content/view/279/51/

Это уже неактуально в связи с выходом семёрки.

Ник wrote:
Есть ещё ключ настроек "CompareTool=", но как с ним работать - я так и не понял...

Именно. А работать с ним не нужно, с ним Тотал будет работать. Smile В этом ключе просто указываешь путь к программе сравнения, и всего делов. После этого сравнение будет автоматически выполняться этой программой (а для внутреннего остаётся команда cm_IntCompareFilesByContent.

#15:  Author: Veet PostPosted: Wed Jun 20, 2007 14:00
    —
CaptainFlint wrote:
Именно. А работать с ним не нужно, с ним Тотал будет работать. Smile В этом ключе просто указываешь путь к программе сравнения, и всего делов. После этого сравнение будет автоматически выполняться этой программой (а для внутреннего остаётся команда cm_IntCompareFilesByContent.

Помогло, спасибо. Что ж он такой неповоротливый, как теперь назначить хот-кей на меню "Сравнить по содержимому..."?

#16:  Author: Veet PostPosted: Wed Jun 20, 2007 14:04
    —
И все-равно не так как хотелось бы работает. Хотябы один файл нуно выделить пробелом(инсертом), без выделение не подхватывает файлы под курсором на обеих панелях Sad.

#17:  Author: Alextp PostPosted: Wed Jun 20, 2007 14:25
    —
Оно поддерживает указание шаблона (%P %N) в "CompareTool="?

#18:  Author: CaptainFlintLocation: Москва PostPosted: Wed Jun 20, 2007 19:47
    —
Veet wrote:
Что ж он такой неповоротливый

Кто именно неповоротливый?

Veet wrote:
как теперь назначить хот-кей на меню "Сравнить по содержимому..."?

Точно так же, как и на любую другую команду - в диалоге настроек, Разное.

Veet wrote:
И все-равно не так как хотелось бы работает. Хотябы один файл нуно выделить пробелом(инсертом), без выделение не подхватывает файлы под курсором на обеих панелях

Так было всегда, в том числе и для внутреннего инструмента. Если не выделять имена, сравниваются одноимённые файлы, что лично для меня кажется более логичным и удобным.

Alextp wrote:
Оно поддерживает указание шаблона (%P %N) в "CompareTool="?

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

#19:  Author: Veet PostPosted: Wed Jun 20, 2007 21:47
    —
CaptainFlint wrote:

Кто именно неповоротливый?

Да ТК, кто же исче. Чтобы что-то настроить, нуно столько геморится. Одни настройки через гуёвину, иные через конфиг файл(откуда я могу знать что там писать, где пинать чтобы работало) - просто пипец какой-то.
Спасибо за ответы.

#20:  Author: CaptainFlintLocation: Москва PostPosted: Wed Jun 20, 2007 22:11
    —
Veet wrote:
Одни настройки через гуёвину, иные через конфиг файл

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

Veet wrote:
откуда я могу знать что там писать, где пинать чтобы работало

Интересно, для чего в программах бывают справочные файлы?.. Rolling Eyes

#21:  Author: c930 PostPosted: Fri Jun 29, 2007 03:34
    —
Есть два каталога (с подкаталогами) в которых одни и те же файлы, но в одном они переименованы, а точнее имена испорчены, а в другом восстановленные с правильными именами. Нужно утилиту наподобие Синхронизации каталогов TC, которая бы сравнила оба каталога по содержимому файлов (побайтно), но сопоставляться файлы должны не по имени естественно как в Синхронизации каталогов, а по размеру.

#22:  Author: МоторокерLocation: г. Пермь (читается Перьмь) PostPosted: Fri Jun 29, 2007 09:46
    —
CaptainFlint wrote:
Veet wrote:
И все-равно не так как хотелось бы работает. Хотябы один файл нуно выделить пробелом(инсертом), без выделение не подхватывает файлы под курсором на обеих панелях

Так было всегда, в том числе и для внутреннего инструмента. Если не выделять имена, сравниваются одноимённые файлы, что лично для меня кажется более логичным и удобным.

Угу, это оч. удобно.
Но когда нет одноимённых файлов, второй файл оказывается пустыми и всё равно приходится либо его выбирать либо выходить из диалога и выделять файлы явно.

Было бы удобней так:
Если есть выделенные файлы, сравниваются они.
Иначе: Если есть одинаковые файлы, сравниваются они.
Иначе: Сравниваются активные файлы.

Третий случай пока не работает.

c930 wrote:
Есть два каталога (с подкаталогами) в которых одни и те же файлы

Какова цель?
1. Отсортировать обе панели по дате
2. Сохранить список имён правильных файлов
3. Переименовать через ИГП счётчиком
4. Синхронизировать
5. Вернуть сохранённые имена

#23:  Author: c930 PostPosted: Sun Jul 01, 2007 01:45
    —
Моторокер
Спасибо за совет. Попробую так, но так много ручной работы, т.к. много подкаталогов и файлов. А цель проверить восстановленные файлы, не битые ли они, сравнивая с оригиналами.
Если кто знает метод попроще, утилиту может какую "синхронизации каталогов", где можно файлы по размеру сопоставить - подскажите.

#24:  Author: НикLocation: Москва PostPosted: Sun Jul 01, 2007 12:08
    —
c930 wrote:
цель проверить восстановленные файлы, не битые ли они, сравнивая с оригиналами


Пардон, но - если имя файла изменено и он битый - как понять, что это не тот файл???
Да и размер у битых файлов наверняка другой...

Попробуйте взять контентный плагин контрольной суммы, сделать колонку MD5, отсортировать по ней - и сравнивать файлы.
Если мешают директории - сделайте "Показ всех файлов без директорий".

Или можно сделать так - свалить все файлы (оригиналы и восстановленные) в кучу и потом убрать дубликаты - по контрольной сумме, игнорируя имена - например CloneSpy (он даёт выбирать - какой из дубликатов стирать; будьте осторожнее - там нет запроса на удаление дубликатов - стирает сразу и, по-моему, мимо корзины).
А битые файлы можно потом убирать руками по какому-либо характерному признаку содержания - выявляемому через контент-плагины.

Или переименовать и те и другие файлы по внутренним свойствам с помощью контентных плагинов - тогда легко будет сравнивать с помощью встроенной утилиты ТК.

Кстати, если изменены только имена - но не содержание - то поиск дубликатов в ТК легко ловит такие файлы (только снять галку "Имена").

В целом:
задача поставлена очень неконкретно - что за файлы, их тип, откуда взялись битые, сколько их и прочее.

#25:  Author: МоторокерLocation: г. Пермь (читается Перьмь) PostPosted: Mon Jul 02, 2007 08:38
    —
c930 wrote:
А цель проверить восстановленные файлы, не битые ли они, сравнивая с оригиналами.

Зачем проверять правильность восстановления файлов, если есть их оригиналы?

Это тестирование программ для восстановления файлов?

#26:  Author: c930 PostPosted: Mon Jul 02, 2007 19:48
    —
Ник
Quote:
если имя файла изменено и он битый - как понять, что это не тот файл???
Моторокер
Quote:
Зачем проверять правильность восстановления файлов, если есть их оригиналы?
Есть оригинальные файлы (небитые), но с испорченными именами и есть восстановленные с правильными именами.
Quote:
Это тестирование программ для восстановления файлов?
Ну т.к. дело уже прошлое, в тот раз я сделал выборочные проверки вручную, вроде всё совпадало. Так что цель сейчас:
- если найдётся, иметь инструмент;
- убедиться, что файлы восстановились таки все правильно, и можно данной технологии доверять;
- в тот раз я оставил у себя на компе несколько каталогов с песнями, как "оригиналы", так и восстановленные - так, что можно будет место освободить на винте.

#27:  Author: laburj PostPosted: Thu Sep 16, 2010 21:40
    —
Моторокер wrote:
Было бы удобней так:
Если есть выделенные файлы, сравниваются они.
Иначе: Если есть одинаковые файлы, сравниваются они.
Иначе: Сравниваются активные файлы.

Третий случай пока не работает.

Так как чаще всего использую как раз третий вариант, т.е. сравниваю файлы под курсором левой и правой панели, решил написать следующий AutoHotkey скрипт:
Code:
SendMessage, 0x433, 530,,, ahk_class TTOTAL_CMD ;cm_SaveSelection
SendMessage, 0x433, 524,,, ahk_class TTOTAL_CMD ;"cm_ClearAll"
Send {Space}
ControlSend,, {tab},ahk_class TTOTAL_CMD
SendMessage, 0x433, 530,,, ahk_class TTOTAL_CMD ;cm_SaveSelection
SendMessage, 0x433, 524,,, ahk_class TTOTAL_CMD ;"cm_ClearAll"
Send {Space}
SendMessage, 0x433, 2022,,, ahk_class TTOTAL_CMD ;"cm_CompareFilesByContent"
SendMessage, 0x433, 529,,, ahk_class TTOTAL_CMD ;"cm_RestoreSelection"
ControlSend,, {tab},ahk_class TTOTAL_CMD
SendMessage, 0x433, 529,,, ahk_class TTOTAL_CMD ;"cm_RestoreSelection"
ExitApp

кнопка к скрипту:
Code:
TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\Scripts\compare.ahk"

C:\Program Files\AutoHotkey\AutoHotkey.exe
Сравнить файлы под курсором
%COMMANDER_PATH%\Scripts\

-1

Скрипт будет работать, если в секции [Configuration] файла wincmd.ini
SpaceMovesDown=0
и в ключе CompareTool= будет указана какая-либо внешняя программа для сравнения файлов, например Compare It!

можно было бы воспользоваться для этих же целей воспользоваться кнопкой:
Code:
TOTALCMD#BAR#DATA
"C:\Program Files\Compare It!\wincmp3.exe"
%P%N %T%M
C:\Program Files\Compare It!\wincmp3.exe
Сравнить файлы под курсорами
C:\Program Files\Compare It!\

-1

но эта кнопка не позволит сравнить файлы из архивов.

пс. в случае если были сделаны какие-либо выделения файлов на панелях перед запуском скрипта - они сохранятся.

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

 !  Avada:
Цитата сокращена до значимого фрагмента. Оверквотинг формально не запрещён, однако не приветствуется.

#28:  Author: KarSLocation: г. Абакан PostPosted: Sun Nov 27, 2011 13:36
    —
laburj
Спасибо за решение проблемы.
Пока меня вариант с кнопкой для Compare It! устраивает, т.к. файлы из архивов не сравниваю.

#29:  Author: LNSLocation: Питер PostPosted: Wed May 14, 2014 20:45
    —
Каким образом CompareIt! сравнивает изображения?
Пробовал-пробовал, так ничего и не понял…

#30:  Author: AvadaLocation: Россия, Саратов PostPosted: Wed May 14, 2014 22:12
    —
LNS
Слева и справа просто отображаются соответствующие картинки. Особого практического значения кроме просмотра "вприглядку" это не имеет. Нормальное сравнение выполняется с текстами. А вообще у этой программы есть собственная справка на русском языке, там всё можно почитать.

#31:  Author: LNSLocation: Питер PostPosted: Wed May 14, 2014 22:52
    —
Avada wrote:
у этой программы есть собственная справка на русском языке

Похоже запрятали её пуще кащеева яйца, я лично найти не могу.

#32:  Author: Skif_off PostPosted: Thu May 15, 2014 07:11
    —
LNS
http://www.grigsoft.ru/help/source/html/cmp_dialog_about.htm

#33:  Author: LNSLocation: Питер PostPosted: Thu May 15, 2014 07:30
    —
Skif_off
спасибо; но разве там описано сравнение изображений?

#34:  Author: AvadaLocation: Россия, Саратов PostPosted: Thu May 15, 2014 08:25
    —
LNS
Просмотр изображений появился в версии 4.0, а русская справка была сделана до этого и больше, видимо, не обновлялась. В более свежей английской есть. А про то, что это в первую очередь инструмент текстового сравнения (и соответствующего редактирования), есть везде.

#35:  Author: LNSLocation: Питер PostPosted: Thu May 15, 2014 11:23
    —
Avada
ничего, касательно работы с изображениями я и по английски понял Very Happy
«
How to compare images with Compare It!

Currently image comparison function in Compare It! are limited to simple viewing of 2 images side-by-side.
»
Тем более, что от вашего ответа по сути не отличается.
Обманулся немного обсуждением развития этой фичи на оф.форуме программы ( http://www.grigsoft.ru/forum/viewtopic.php?t=203 ), оказывается всё так и осталось…

#36:  Author: Skif_off PostPosted: Thu May 15, 2014 12:12
    —
LNS wrote:
но разве там описано сравнение изображений?

Разве цитата и ответ как-то касались сравнения изображений? Smile Только русскоязычной справки.
Конкретно по изображениям есть AntiDupl.NET, ImageDupeless, Image Comparer (у первого, ЕМНИП, никаких ключей запуска кроме указания каталога с настройками).

#37:  Author: LNSLocation: Питер PostPosted: Thu May 15, 2014 14:07
    —
Skif_off
LNS wrote:
Каким образом CompareIt! сравнивает изображения?
Пробовал-пробовал, так ничего и не понял…

Avada wrote:
LNS
…вообще у этой программы есть собственная справка на русском языке, там всё можно почитать.


Добавлено спустя 4 минуты:

…но изображения — это уже просто интересно было, а поставил прогу, чтоб pdf-ки сравнить… — помогла! Smile

Добавлено спустя 2 минуты:

…хотел оплатить ключ, но WebMoney у мну нет, а на Софткее я её что-то не нашёл!

#38:  Author: AvadaLocation: Россия, Саратов PostPosted: Thu May 15, 2014 14:34
    —
LNS
Слова про справку были не столько точным ответом на вопрос про изображения, сколько продолжением предыдущих моих же слов, что нормальное сравнение выполняется с текстами. А разработка давно заморожена, так что на Софткее вполне может и не быть. Впрочем, качество программы меня более чем устраивает уже много лет невзирая на дату последнего релиза.

#39:  Author: BatyaLocation: Москва, Россия PostPosted: Fri May 16, 2014 11:00
    —
Пересмотрел тему... Вроде бы никто не упоминал про Beyond Compare. После нескольких лет пробования различных сравнилок остановился на этой. Отличная прога!
И к последнему вопросу - есть возможность сравнивать картинки.

#40:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri May 16, 2014 11:12
    —
Batya
Я правильно понимаю, что возможность автоматического переноса длинных строк для полного отображения их содержимого без всякой прокрутки в Beyond Comparе не реализована?

#41:  Author: BatyaLocation: Москва, Россия PostPosted: Fri May 16, 2014 12:35
    —
Avada
Хм... Никогда не было необходимости в переносе.
Покопался и не нашёл Sad

#42:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri May 16, 2014 13:19
    —
Batya
А у меня необходимость позарезная, без этого работать крайне неудобно. Именно поэтому (хотя, конечно не только, но это преимущество решающее) пользуюсь Compare It!, а не встроенным инструментом TC, Beyond Comparе и так далее.

#43:  Author: BatyaLocation: Москва, Россия PostPosted: Fri May 16, 2014 14:34
    —
Avada
Жаль Sad
В качестве некой альтернативы в Beyond Comparе можно расположить панели с текстом файлом не рядом, а друг над другом.

#44:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri May 16, 2014 14:49
    —
Batya
Спасибо, этот вариант знаю, но на практике на альтернативу ни разу не тянет. И визуально отслеживать различия неудобно, и многие строки-абзацы всё равно не вмещаются. Точно так же, как и во встроенном инструменте TC.

#45:  Author: LNSLocation: Питер PostPosted: Mon May 26, 2014 23:21
    —
LNS wrote:
оплатить ключ, по WebMoney

удалось — работает Wink

#46: Натуральная сортировка Author: WindR PostPosted: Sun Jun 07, 2020 20:21
    —
Обращаюсь к знатокам VBS.
Возможно ли реализовать натуральную сортировку в скрипте, идущем с beyond compare?
На данный момент он сортирует так: 1, 11...19, 2..29, 3 и т.д.

#47:  Author: FlasherLocation: Москва PostPosted: Mon Jun 08, 2020 00:41
    —
WindR
 Одни числа сортировать — не проблема:
А вот текст вперемешку с цифрами — это уже совсем другая песня.

#48:  Author: WindR PostPosted: Tue Jun 09, 2020 18:21
    —
Flasher
Нужно модифицировать
Code:
' INI_sorted.vbs
'
' Sorts .INI files.
' Usage:
'  WScript INI_sorted.vbs <input file> <output file>
'
' Notes:
'  Handles Unicode or ASCII encodings
'  Handles line continuations ('\' at end of line)
'  Blank grouped with next
'  Comment grouped with previous

Option Explicit

' OpenTextFile format
Const TristateTrue = -1
Const TristateFalse = 0
' OpenTextFile iomode
Const ForReading = 1

Dim FileSys
Set FileSys = CreateObject("Scripting.FileSystemObject")
If FileSys.FileExists(WScript.Arguments(1)) Then
   FileSys.DeleteFile WScript.Arguments(1)
End If
' Calculate codepage (Unicode or ASCII)
Dim CodePage, SrcFile
Set SrcFile = FileSys.OpenTextFile(WScript.Arguments(0), ForReading, False, TristateFalse)
If Left(SrcFile.ReadLine, 2) = Chr(255) & Chr(254) Then
   CodePage = TristateTrue
Else
   CodePage = TristateFalse
End If
SrcFile.Close
' Load lines
Dim BOM, HasBOM, I, Lines()
BOM = Chr(239) & Chr(187) & Chr(191)
HasBOM = 0
Set SrcFile = FileSys.OpenTextFile(WScript.Arguments(0), ForReading, False, CodePage)
I = 0
Do While Not SrcFile.AtEndOfStream
   ReDim Preserve Lines(I)
   Lines(I) = SrcFile.ReadLine
   If (I = 0) and (Left(Lines(I), Len(BOM)) = BOM) Then
      HasBOM = 1
      Lines(I) = Right(Lines(I), Len(Lines(I)) - Len(BOM))
   End If
   I = I + 1
Loop
SrcFile.Close
' Calculate ids
Dim Blank, Continued, IDs(), J, PropName, S, SectName, SList
Blank = True
Continued = False
ReDim IDs(UBound(Lines))
PropName = Chr(0)
SectName = Chr(0)
For I = 0 To UBound(Lines)
   S = Trim(Lines(I))
   If S = "" Then ' Blank
      Blank = True
      Continued = False
   ElseIf Continued Then ' Continuation of previous
      If Right(S, 1) <> "\" Then
         Continued = False
      End If
   ElseIf Left(S, 1) = ";" Then ' Comment
   ElseIf Left(S, 1) = "[" Then ' Section
      Blank = False
      PropName = Chr(0)
      SList = Split(S, "]", -1, vbTextCompare)
      If IsArray(SList) Then
         SectName = Mid(SList(0), 2)
      Else
         SectName = Mid(S, 2)
      End If
      If SectName = "" Then
         SectName = Chr(0)
      End If
   Else ' Property
      Blank = False
      If Right(S, 1) = "\" Then
         S = Left(S, Len(S) - 1)
         Continued = True
      End If
      SList = Split(S, "=", -1, vbTextCompare)
      If IsArray(SList) Then
         PropName = SList(0)
      Else
         PropName = S
      End If
      If PropName = "" Then
         PropName = Chr(0)
      End If
   End If
   If Blank Then
      S = ""
   Else
      S = SectName & vbTab & PropName
   End If
   IDs(I) = S
   If (S <> "") And (I > 0) Then
      J = I - 1
      Do While (IDs(J) = "")
         IDs(J) = S
         If J = 0 Then
            Exit Do
         End If
         J = J - 1
      Loop
   End If
Next
For I = 0 To UBound(Lines)
   If IDs(I) = "" Then
      IDs(I) = vbTab
   End If
   IDs(I) = IDs(I) & vbTab & Right("0000000000" & I, 10)
Next
' Sort
QuickSort 0, UBound(Lines)
' Save
Dim TgtFile
Set TgtFile = FileSys.CreateTextFile(WScript.Arguments(1), True, CodePage = TristateTrue)
If HasBOM <> 0 Then
   Lines(0) = BOM & Lines(0)
End If
For I = 0 To UBound(Lines)
   TgtFile.WriteLine Lines(I)
Next
TgtFile.Close

Sub QuickSort(Lo, Hi)
   Dim I, J, P, T
   Do
      I = Lo
      J = Hi
      P = Int((Lo + Hi) / 2)
      Do
         Do While IDs(P) > IDs(I)
            I = I + 1
         Loop
         Do While IDs(J) > IDs(P)
            J = J - 1
         Loop
         If I > J Then
            Exit Do
         End If
         T = IDs(I)
         IDs(I) = IDs(J)
         IDs(J) = T
         T = Lines(I)
         Lines(I) = Lines(J)
         Lines(J) = T
         If P = I Then
            P = J
         ElseIf P = J Then
            P = I
         End If
         I = I + 1
         J = J - 1
      Loop While (I <= J)
   If Lo < J Then
      QuickSort Lo, J
   End If
   Lo = I
   If I >= Hi Then
      Exit Do
   End If
   Loop
End Sub

чтобы он сортировал строки просто отбросив нечисловые знаки до первого вхождения числа.

#49:  Author: FlasherLocation: Москва PostPosted: Wed Jun 10, 2020 03:02
    —
WindR
Распаковывать zip-ы я умею. Wink
Вот прямо сейчас ковырять код под эту прогу нет ни времени, ни желания. Но для прогресса советую описать в подробностях поведение в программе со скриншотами и отметками на них.

#50:  Author: WindR PostPosted: Thu Jun 11, 2020 09:45
    —
Flasher
Есть bar-файл Total Commander. Несортированный он выглядит так
Code:
[Buttonbar]
Buttoncount=16
button1=%commander_path%\Install\Icons\w-b\2.icl32,1
iconic1=
iconic6=0
iconic7=1
iconic8=0
button9=%P%\DrWeb\ico\2.icl
cmd9=%R%
path9=%P%\DrWeb\
menu9=Dr.Web 6 Portable Scanner - лечащий антивирусный сканер|Клик с Ctrl обновит программу|Клик с Shift проверит файл/папку под курсором
button10=%I%,220
cmd10=%R%
path10=%P%\uVS\
iconic10=0
menu10=uVS - борьба с неизвестными вирусами. Отлично справляется с Winlock. Восстановление ОС. Умеет работать с неактивной ОС|Клик с Ctrl обновит программу
button11=%I%,279
cmd11=%R%
path11=%P%\avz4\
iconic11=0
menu11=AVZ - борьба с SpyWare, AdWare, Dialer, BackDoor, Trojan + очень полезная система исследования и восстановления Windows|Клик с Ctrl обновит программу
button12=%P%\AdwCleaner\ico\2.ico
cmd12=%R%
menu12=AdwCleaner - поможет найти рекламное и потенциально опасное ПО|Клик с Ctrl обновит программу
path12=%P%\AdwCleaner\
cmd1=%P%\ButtonBar\ButtonBar eXtended.exe
param1=em_bar1>1
path1=%commander_path%\install\Bars\
menu1=Команды, Архиваторы, Работа с файлами (клик с Ctrl сделает панель по-умолчанию) (Alt+1)
button13=%I%,159
cmd13=%P%\AnVir\VirusTotalUpload.exe
menu13=Virus Total Upload - отправить файл на сайт VirusTotal.com, там его проверят более 60 антивирусов. Можно перетащить файл на кнопку
path13=%P%\AnVir\
iconic13=0
...

INI_sorted.vbs превращает его в
Code:
[Buttonbar]
Buttoncount=16
button1=%commander_path%\Install\Icons\w-b\2.icl32,1
button10=%I%,220
button11=%I%,279
button12=%P%\AdwCleaner\ico\2.ico
button13=%I%,159
button2=%commander_path%\Install\Icons\w-b\2.icl32,3
button3=%commander_path%\Install\Icons\w-b\2.icl32,5
button4=%commander_path%\Install\Icons\w-b\2.icl32,7
button5=%commander_path%\Install\Icons\w-b\2.icl32,9
button7=%commander_path%\Install\Icons\w-b\2.icl32,12
button9=%P%\DrWeb\ico\2.icl
cmd10=%R%
cmd11=%R%
cmd12=%R%
cmd13=%P%\AnVir\VirusTotalUpload.exe
cmd14=%P%\USBVaccine\USBVaccine.exe
cmd15=%P%\TrueCrypt\TrueCrypt.exe
cmd16=%R%
cmd2=%P%\ButtonBar\ButtonBar eXtended.exe
cmd3=%P%\ButtonBar\ButtonBar eXtended.exe
cmd4=%P%\ButtonBar\ButtonBar eXtended.exe
cmd5=%P%\ButtonBar\ButtonBar eXtended.exe
cmd7=%COMMANDER_PATH%\install\Bars\favorit\favorit.bar
cmd9=%R%
iconic1=
iconic6=0
iconic7=1
iconic8=0
menu10=uVS - борьба с неизвестными вирусами. Отлично справляется с Winlock. Восстановление ОС. Умеет работать с неактивной ОС|Клик с Ctrl обновит программу
menu11=AVZ - борьба с SpyWare, AdWare, Dialer, BackDoor, Trojan + очень полезная система исследования и восстановления Windows|Клик с Ctrl обновит программу
menu12=AdwCleaner - поможет найти рекламное и потенциально опасное ПО|Клик с Ctrl обновит программу
menu13=Virus Total Upload - отправить файл на сайт VirusTotal.com, там его проверят более 60 антивирусов. Можно перетащить файл на кнопку
menu14=USB Vaccine - защита флешки от вирусов с автозапуском, методом записи на флеш неудаляемых файлов
menu15=TrueCrypt - создаёт зашифрованный том-контейнер (выглядит как обычный файл mp3, avi и тд), который затем можно подключить в виде диска и хранить на нём информацию
menu16=KeePass Password Safe 2.xx - надёжное хранение паролей. Генератор паролей. Требуется .NET|Клик с Ctrl обновит программу
menu2=Программы и Утилиты (клик с Ctrl сделает панель по-умолчанию) (Alt+2)
menu3=Интернет и Сети (клик с Ctrl сделает панель по-умолчанию) (Alt+3)
menu4=Настройка, Оптимизация, Восстановление, Антивирусы (клик с Ctrl сделает панель по-умолчанию) (Alt+4)
menu5=Пользовательская панель (клик с Ctrl сделает панель по-умолчанию) (Alt+5)
menu7=Задачи
param1=em_bar1>1
param10=-c _update.bat -e _update.bat -u -r start.exe
param11=-c _update.bat -e _update.bat -u -r avz4\avz.exe
param12=-c _update.bat -e _update.bat -u -r *.exe
param2=em_bar2>1
param3=em_bar3>1
param4=em_bar4>1
param5=em_bar0>1
param9=-s drweb\drweb32w.exe --sp="%P%N /NI /ML /AR /HA /OK /UPN /TM- /AL /SS- /SD /SHELL /TB- /NR" -c _update.bat -e _update.bat -u -r drweb\drweb32w.exe --rp="/not_use_shield"
path1=%commander_path%\install\Bars\
menu1=Команды, Архиваторы, Работа с файлами (клик с Ctrl сделает панель по-умолчанию) (Alt+1)
path10=%P%\uVS\
iconic10=0
path11=%P%\avz4\
iconic11=0
path12=%P%\AdwCleaner\
cmd1=%P%\ButtonBar\ButtonBar eXtended.exe
path13=%P%\AnVir\
iconic13=0
...

Нужно внутри секций [.........] сортировать строки натурально по первому встречающемуся в строке числу.
Сейчас для этих целей приходится использовать SortLines.js от KDJ, что неудобно, т.к. требует установки интерпретатора JS.



Total Commander -> Программное обеспечение


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

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group