Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Поиск дубликатов файлов (утилита от VladGuardian)
   Список разделов - Местечко мапперов и моддеров - Поиск дубликатов файлов (утилита от VladGuardian)Ответить
АвторСообщение
VladGuardian
= Commissar =
Next rank: - UAC Commissar - after 263 points
5537

Doom Rate: 1.28

Posts quality: +1899
Ссылка на пост №1 Отправлено: 22.07.20 15:37:35
Создание зачётной темы (+40)
Утилита, помогающая при разгребании завалов цифрового мусора.
Одновременный поиск дубликатов как на жестких/SSD-дисках, так и на подключенных внешних дисках (флешках).
Содержимое всех носителей сравнивается между собой, с подсчётом контрольных сумм файлов.

Актуальная версия - v1.2 [30.07.2020]
https://drive.google.com/file/d/164WkhiNVKIYiOiAw-YC4aRL0UR3p6BiB/view?usp=sharing



Системные требования:
- ПК с .NET 3.5 (любая операционка начиная с Windows 7)

Как пользоваться утилитой?
1) Выбираем диски поиска (верхняя строчка с буковками)
2) Выставляем минимальный размер находимых файлов (желтое окошко)
3) Нажимаем кнопку [Поиск]
4) Ждём :)
5) Анализируем найденные дубликаты: похожие файлы выделены одним цветом. (группы файлов)
6) Самый правый столбец (CRC32) содержит контрольную сумму файла. Файлы полностью идентичны ТОЛЬКО в случае совпадения их CRC32 (контрольных сумм)
7) Двойной щелчок по строке - открыть файл программой по умолчанию. (видео - откроется в проигрывателе, картинки - в ACDSee, тексты - в Блокноте, и т.д.)

История версий:
Скрытый текст:

[22.07.2020] - v1.0

[26.07.2020] - v1.1
* Файлы со слишком длинным путём больше не анализируются. Список этих файлов выдается в конце сканирования.
* Файлы с закрытым доступом (например, системные файлы Windows), выдававшие исключение (Exception), больше не анализируются. Список этих файлов выдается в конце сканирования.
* "Несуществующие" файлы больше не вызывают исключения. Такое происходит например, когда вы запустили Поиск, и в это время работаете с веб-браузере, который создаёт и удаляет кэш-файлы. Список этих файлов не выдается. (нет смысла)
* Исправлена ошибка в истекшем времени сканирования. (у переменной типа TimeSpan вместо поля .TotalSeconds ошибочно бралось поле .Seconds)
* Исправлен вылет при нажатии кнопки "Просмотр файла" при пустом списке файлов.
+ Добавлена кнопка "Открыть папку с файлом"
+ Добавлено пропорциональное масштабирование столбцов таблицы, при ресайзе главного окна приложения.
+ Цвет поля ввода размера файла - изменен на жёлтый.

[27.07.2020] - v1.2
[+] Работает удаление файлов в Корзину. Удаляются даже файлы с атрибутом 'read-only'.
[fixed] Устранён вылет при нажатии кнопки "Открыть папку".
[fixed] Таблица полностью очищается при нажатии кнопки "Стоп".
[fixed] Корректный подсчёт кол-ва дубликатов (и их суммарного размера)
[*] Начальный размер искомых файлов выставлен на 50 Mb (было 1000 Mb)
[*] Более точное масштабирование столбцов таблицы при ресайзе.
[*] Начальная высота окна приложения увеличена (с расчетом на экранное разрешение)


Рейтинг сообщения: +4, отметил(и): BL@CK DE@TH, Kirov-13, alekv, JSO x, FoxPlays, STALKEROZ_
4 10 23
STALKEROZ_
= Lance Corporal =
Next rank: - Master Corporal - after 40 points
160

Doom Rate: 1.15

Posts quality: +17
Ссылка на пост №2 Отправлено: 24.07.20 07:33:07
Это бред... Т.к может быть два разных текстовика в первом может быть написано: говно12345 а в другом :саня х*й
И у них могут быть одни и те же контрольные суммы

Рейтинг сообщения: -5, отметил(и): demonized, Dagamon, D1m3, JSO x, TesaQ
1
BETEPAH[iddqd]
- Captain -
Next rank: = Captain = after 228 pointsМодератор форума
2112

Doom Rate: 1.38

Posts quality: +901
Ссылка на пост №3 Отправлено: 24.07.20 11:09:10
STALKEROZ_ пишет:
Т.к может быть два разных текстовика в первом может быть написано: говно12345 а в другом :саня х*й
И у них могут быть одни и те же контрольные суммы

Ну попробуй, найди такой файл))
Ты прежде, чем писать подобное, сначала убедись, что ты прав. Ну или скачай прогу, проверь и скажи "Ага, вот, не работает", а так ты человеку еще и диз влепил ни за что, ни про что.

Рейтинг сообщения: +3, отметил(и): VladGuardian, Doomstalker, soldierDude
2 2
JSO x
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 10 points
1280

Doom Rate: 2.29

Posts quality: +669
Ссылка на пост №4 Отправлено: 24.07.20 13:21:35
Ну, что могу сказать... .NET не надо использовать.
Скрытый текст:



Текст:
Кстати, что забавно -- судя по логу, использует он версию 2, притом, что 3.5 у меня вполне установлена.
See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
   at System.IO.Path.SafeSetStackPointerValue(Char* buffer, Int32 index, Char value)
   at System.IO.Path.NormalizePathFast(String path, Boolean fullCheck)
   at System.IO.FileInfo..ctor(String fileName)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.buttonFind_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
FindTwins
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///D:/JSO/JSOFiles/Utils/FindTwins.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Windows.Forms.resources
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.



Память за собой не чистит, перекладывая на систему (при повторном пуске поиска количество занятой памяти не сбрасывается). Ну, тут уже современный "стиль" программирования, не к тебе вопрос.

Не даёт сменить диск и запустить поиск по-новому (пункты заблокированы после останова):
Скрытый текст:



Блин, Влад, это уже не смешно.
Скрытый текст:



Фрагмент текста:
************** Exception Text **************
System.IO.FileNotFoundException: Could not find file 'C:\Users\Morthimer McMare\AppData\Local\Mozilla\Firefox\Profiles\ovsdj6g8.default\cache2\entries\C3840F4512540D596EA809CC0C51F865DAC8BD44'.
File name: 'C:\Users\Morthimer McMare\AppData\Local\Mozilla\Firefox\Profiles\ovsdj6g8.default\cache2\entries\C3840F4512540D596EA809CC0C51F865DAC8BD44'
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileInfo.get_Length()
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.buttonFind_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)




На версии 1.0 просто не могу завершить проверку ни по одному из своих дисков. При поиске программа ощутимо тормозит, при сбрасывании -- зависает на несколько секунд.

STALKEROZ_ пишет:
И у них могут быть одни и те же контрольные суммы

Вероятность для CRC32 по грубым прикидкам -- примерно 0,000000023%. Воистину, ты сначала найти попробуй такие, чтобы ещё и по размеру совпадали...
Другими словами -- технически, ты прав, но вот в матчасти ошибка.

Рейтинг сообщения: +2, отметил(и): VladGuardian, FoxPlays
2 7 1
FoxPlays
= Sergeant Major =
Next rank: UAC Sergeant Major after 36 points
644

Doom Rate: 2.14

Posts quality: +367
Ссылка на пост №5 Отправлено: 24.07.20 14:48:23
К сожалению не получилось проверить свой диск до конца из-за ошибки .NET Framework'а. :(



Детальки ошибки:
Скрытый текст:

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
   at System.IO.Path.SafeSetStackPointerValue(Char* buffer, Int32 index, Char value)
   at System.IO.Path.NormalizePathFast(String path, Boolean fullCheck)
   at System.IO.FileInfo..ctor(String fileName)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.EnlistFilesFromDir(String dir)
   at FindTwins.Form1.buttonFind_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9151 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
mscorlib.resources
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9151 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
FindTwins
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Users/FoxPlays/Desktop/FindTwins.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9147 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Windows.Forms.resources
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
Accessibility
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.



В процессе поиска дубликатов не увидел их самих. Нашло только два одинаковых файла - soundb0.obw, т.к. я одну программу установил в несколько папок, на этом спасибо! :)



Для меня остаётся странным, VladGuardian, что у тебя не было этой ошибки! :o Всё же рекомендую уже начать делать фиксы, т.к. программа работает некоректно и не завершает свою работу.

Рейтинг сообщения: +1, отметил(и): VladGuardian
1 1 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №6 Отправлено: 24.07.20 17:57:52
BETEPAH[iddqd] пишет:
Ну попробуй, найди такой файл))
Ты прежде, чем писать подобное, сначала убедись, что ты прав. Ну или скачай прогу, проверь и скажи "Ага, вот, не работает", а так ты человеку еще и диз влепил ни за что, ни про что.

https://stackoverflow.com/questions/48247647/how-do-i-modify-a-file-while-maintaining-its-crc-32-checksum/48248530

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

Рейтинг сообщения: +1, отметил(и): VladGuardian
2 2 1
JSO x
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 10 points
1280

Doom Rate: 2.29

Posts quality: +669
Ссылка на пост №7 Отправлено: 24.07.20 18:58:18
ZZYZX, а здесь уже вступает в игру точный размер файла. Насколько вижу по алгоритму, он по-любому добавляет несколько байт в конец, что уже создаёт несовпадение.

JSO x пишет:
Воистину, ты сначала найти попробуй такие, чтобы ещё и по размеру совпадали...


Правда, действительно, в шапке темы (в пункте про сравнение) про размер -- ни слова.
VladGuardian пишет:
6) Самый правый столбец (CRC32) содержит контрольную сумму файла. Файлы полностью идентичны ТОЛЬКО в случае совпадения их CRC32 (контрольных сумм)
2 7 1
demonized
- Lance Corporal -
Next rank: = Lance Corporal = after 21 points
139

Doom Rate: 2.17

Posts quality: +41
Ссылка на пост №8 Отправлено: 24.07.20 22:03:00
STALKEROZ_ пишет:
И у них могут быть одни и те же контрольные суммы

Не могут, именно для этого и были придуманы хэши, чтобы даже при самом незначительном изменении файла его хэш менялся кардинально.
Возможно стоит добавить MD5 алгоритм для проверки дубликатов.
lafoxxx [B0S]
= 1st Lieutenant =
Next rank: - Captain - after 118 points
1972

Doom Rate: 1.39

Posts quality: +903
Ссылка на пост №9 Отправлено: 24.07.20 22:43:32
demonized
Коллизия бывает, хоть редко. Я бы отправил пожелание, чтоб можно было выбирать тип контрсуммы желаемый (или один, или несколько), по которому искать -- мд5, срс32, сха256 и т.д. -- заодно получится производительностью поиска управлять (какие-то алгоритмы более ресурсоёмкие, какие-то -- меньше)

Хотя наверное всё равно даже самый быстрый алгоритм упрётся в скорость харда или работы пакета дллек, на котором прога завязана. так что может быть это "призрачная экономия".
2 2 4
VladGuardian
= Commissar =
Next rank: - UAC Commissar - after 263 points
5537

Doom Rate: 1.28

Posts quality: +1899
Ссылка на пост №10 Отправлено: 25.07.20 01:19:55
JSO x
FoxPlays
ZZYZX
Скрытый текст:

Спасибо за замечания и найденные ошибки.
Буду работать над версией 1.1


Добавлено спустя 1 день 19 часов 57 минут 42 секунды:

Новая версия - v1.1 [26.07.2020]
https://drive.google.com/file/d/1ZpX8pc9dPj0w73fMovqxTnzdv38fEmKR/view?usp=sharing

Исправлено множество багов:

[fixed] Файлы со слишком длинным путём больше не анализируются.
Список этих файлов выдается в конце сканирования.

[fixed] Файлы с закрытым доступом (например, системные файлы Windows), выдававшие исключение (Exception), больше не анализируются.
Список этих файлов выдается в конце сканирования.

[fixed] "Несуществующие" файлы больше не вызывают исключения.
Такое происходит например, когда вы запустили Поиск, и в это время работаете с веб-браузере, который создаёт и удаляет кэш-файлы.
Список этих файлов не выдается. (нет смысла)

[fixed] Исправлена ошибка в истекшем времени сканирования.
(у переменной типа TimeSpan вместо поля .TotalSeconds ошибочно бралось поле .Seconds)

[fixed] Исправлен вылет при нажатии кнопки "Просмотр файл" при пустом списке файлов.

[+] Добавлена кнопка "Открыть папку с файлом"

[+] Добавлено пропорциональное масштабирование столбцов таблицы, при ресайзе главного окна приложения.

[+] Цвет поля ввода размера файла - изменен на жёлтый.

Рейтинг сообщения: +5, отметил(и): lafoxxx [B0S], alekv, Mud, JSO x, FoxPlays
4 10 23
lafoxxx [B0S]
= 1st Lieutenant =
Next rank: - Captain - after 118 points
1972

Doom Rate: 1.39

Posts quality: +903
Ссылка на пост №11 Отправлено: 27.07.20 00:12:19
Удалось наконец глянуть.


Что бы я добавил:

Поиск в указанном пути, а не по всему диску


Что бы я поменял:

Кнопка "показать файл" и "открыть папку" работает даже если файл не выбран -- показывает сам экзешник этот. Надо чтоб они "серели", становясь недоступными.


Баг:

Суммарный объём дубликатов считается "оригинал+дубликаты", а надо "дубликаты".
К примеру, если у тебя три файла по 1 гигу, то надо писать "суммарный объём -- 2 гига, а не 3 (типа сколько места можно освободить, удалив только дубликаты -- ведь хоть один оригинальный файл тебе нужен из них, а прога подначивает всё удалить, обрадовав огромной цифрой.


Вопрос:

Как прога читает инфу о файлах? Что-то больно долго даже на SSD работает. Для сравнения, WinDirStat получает инфу о размере всех файлов за 6 секунд (индексирование выкл).
Наверное она напрямую в MFT как-то лезет, а не просто сканирует (хотя это лишь догадки).

Рейтинг сообщения: +2, отметил(и): VladGuardian, JSO x
2 2 4
FoxPlays
= Sergeant Major =
Next rank: UAC Sergeant Major after 36 points
644

Doom Rate: 2.14

Posts quality: +367
Ссылка на пост №12 Отправлено: 27.07.20 15:12:24
Версия 1.1. -

При попытке выбора папки появилась данная ошибка -


Произошло это комбинацией - лкм по иконке с папкой, выбор диска, лкм по иконке с папкой.
Да, я решил нажать на эту кнопку ещё до скана, т.к. подумал, что это кнопка выбора папки для сканирования :x

Детали ошибки:
Скрытый текст:

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
   at System.Collections.ArrayList.get_Item(Int32 index)
   at FindTwins.Form1.buttonOpenFolder_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9151 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
mscorlib.resources
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9151 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
FindTwins
    Assembly Version: 1.1.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Users/FoxPlays/Desktop/FindTwins.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9147 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Windows.Forms.resources
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
Accessibility
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.


Через некоторое время скана диска C: у меня почему-то (что удивительно) намертво замёрз Windows, к сожалению пришлось его перезапускать так и не завершив сканирование до конца! :(

Рейтинг сообщения: +2, отметил(и): VladGuardian, JSO x
1 1 1
JSO x
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 10 points
1280

Doom Rate: 2.29

Posts quality: +669
Ссылка на пост №13 Отправлено: 27.07.20 22:56:55
Первое, что бросилось в глаза -- довольно дикий размер по умолчанию анализируемых файлов (953.7 Мб -- я в целом-то такие файлы на компьютере стараюсь не хранить!)

Второе -- не очищается первый элемент при останове.

Третье -- "Стоп" слишком просто сделать, просто нажав на пробел или Enter (фокус никуда после старта не переходит, можно легко запороть, например, весь многочасовой анализ).

Четвёртая погрешность заключается в том, что FoxPlays описал: некие простые комбинации вызывают превышение границ списка.

Пятое (к счастью, оно не вылетело, как я предполагал, но зависло основательно):
Скрытый текст:



Шестое -- при достаточно внушительном списке все пункты на экран не помещаются:
Скрытый текст:



Как по мне и по help'у, неудобно, что он без какой-либо опции делает лишь перемещение файла в корзину, а не его удаление. Кстати, как через программу удалить файл, я не нашёл. Просмотреть -- да, аж два способа. Показать в директории -- есть. А вот удалить не смог -- перепробовал самые невероятные клавиши и их комбинации (для утилиты, можно сказать, офисного уровня -- без неприязни, ведь действительно так), вплоть до F8, Alt + Delete или одновременного нажатия ПКМ и ЛКМ.

Следствие предыдущей придирки: совсем не представлено управление горячими клавишами, как минимум, я таковых не нашёл, за исключением tab-переключения. Например, после завершения сканирования -- копия пути до файла (или лучше до содержащего каталога -- но тут уж по опции) по комбинации Ctrl + C или той, которая установлена в системе. Вариант -- по F5 обновление списка (тоже уже успел обломаться).

Рейтинг сообщения: +2, отметил(и): VladGuardian, FoxPlays
2 7 1
VladGuardian
= Commissar =
Next rank: - UAC Commissar - after 263 points
5537

Doom Rate: 1.28

Posts quality: +1899
Ссылка на пост №14 Отправлено: 30.07.20 22:35:56
Новая версия - v1.2 [30.07.2020]
https://drive.google.com/file/d/164WkhiNVKIYiOiAw-YC4aRL0UR3p6BiB/view?usp=sharing

Устранено большинство упомянутых багов.
Проверено на стационарном компе, и ноутбуке (по дискам C: + D: ) - вылетов/зависаний не было.
(диск C: особо критичен, т.к. содержит системные папки, файлы с закрытым доступом и пр. "подводные камни")

[+] Работает удаление файлов в Корзину. Удаляются также файлы с атрибутом 'read-only'. (на 'system' и 'hidden' не пробовал, но это явно нетипичный случай для моей утилиты)
[fixed] Устранён вылет при нажатии кнопки "Открыть папку".
[fixed] Таблица полностью очищается при нажатии кнопки "Стоп".
[fixed] Корректный подсчёт кол-ва дубликатов (и их суммарного размера) - как предлагал lafoxxx [B0S]
[*] Начальный размер искомых файлов выставлен на 50 Mb (ранее было 1000 Mb)
[*] Более точное масштабирование столбцов таблицы при ресайзе.
[*] Начальная высота окна приложения увеличена (с расчетом на экранное разрешение)
4 10 23
Страница 1 из 1Перейти наверх
   Список разделов - Местечко мапперов и моддеров - Поиск дубликатов файлов (утилита от VladGuardian)