|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление одинаковых файлов по размеру |
|
CMD/BAT - [решено] Удаление одинаковых файлов по размеру
|
Пользователь Сообщения: 72 |
Профиль | Отправить PM | Цитировать
Добрый день, нужен батник который сравнивал и удалял одинаковые по размеру файлы в одной папке (и оставлял только один).
Сторонние программы не хочу использовать, нужно именно bat. |
|
Отправлено: 10:41, 16-07-2011 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать root221, Iska, Foreigner, megaloman, - СПАСИБО!
megaloman - работает. |
Отправлено: 17:38, 16-07-2011 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать |
Отправлено: 17:47, 16-07-2011 | #12 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать megaloman, поторопился немного, bat-к работает, но как-то выборочно. Проверил на 5000 файлов в папке, батник удаляет, но не всЁ.
Примерно разобрался в чем дело, на файлах где есть в арабские (китайские) или другие не типичные символы батник затыкаеться. типа XXXXXXXXXXXXX_Штукатурка.jpg Нужно чтоб батник переименовывал их, во что нибудь типа XXXXXXXXXXXXX_yyyyy.jpg, где XXXXXXXXXXXXX - важные символы, yyyyy неважно. Батник будет проверять по 100-200 тыс.файлов. |
Последний раз редактировалось Arsenik77, 16-07-2011 в 20:10. Отправлено: 18:15, 16-07-2011 | #13 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Arsenik77:
Если Вам нужно искать и удалять дубликаты — то это совсем другой разговор, например, «CloneSpy» или «Duplicate Files Finder», або что-то своё — в зависимости от конкретной задачи и условий применения. |
|
Отправлено: 20:26, 16-07-2011 | #14 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать Iska, работает VBScript, PowerShell не понял как запускать.
Но только надо по одному файлу из тех, у которых размер одинаков, оставить. Скрипт также работает с "трудными" именами файлов. |
Последний раз редактировалось Arsenik77, 16-07-2011 в 20:40. Отправлено: 20:30, 16-07-2011 | #15 |
Ветеран Сообщения: 2706
|
Профиль | Отправить PM | Цитировать Попробуйте вариант решения, но при таком большом числе файлов не уверен, как сработает сортировка в Dir. Я попробовал на 50000 файлов, но они небольшого размера
|
------- Последний раз редактировалось megaloman, 16-07-2011 в 21:06. Отправлено: 20:56, 16-07-2011 | #16 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать megaloman, работает с нормальным именами файлов, затык идет на таких именах у файло⠨тукатурка.jpg
|
Отправлено: 21:29, 16-07-2011 | #17 |
Ветеран Сообщения: 1754
|
Arsenik77,
Попробуй такой вариант, правда на большом кол-ве файлов не проверял: |
Отправлено: 21:52, 16-07-2011 | #18 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать Батник затыкается на не правильных именах файлов, типа :
Либо эти файлы (с кривыми именами) надо удалять, либо как-то переименовывать. Задачу считаю решенной, спасибо megaloman |
Последний раз редактировалось Arsenik77, 18-07-2011 в 10:43. Отправлено: 22:09, 16-07-2011 | #19 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать В принципе, у меня сработали и пакетный файл Foreigner'а, и пакетный файл megaloman'а.
Цитата Arsenik77:
Цитата Arsenik77:
Тогда ещё проще (хоть уже и нет необходимости, но приведу код): Option Explicit Dim objFSO Dim strFolder Dim objFile Dim objDictionary Dim elem If WScript.Arguments.Count = 1 Then Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") strFolder = WScript.Arguments.Item(0) If objFSO.FolderExists(strFolder) Then Set objDictionary = WScript.CreateObject("Scripting.Dictionary") For Each objFile In objFSO.GetFolder(strFolder).Files If objDictionary.Exists(objFile.Size) Then objFSO.DeleteFile objFile.Path, True Else objDictionary.Add objFile.Size, objFile.Path End If Next objDictionary.RemoveAll Set objDictionary = Nothing Else WScript.Echo "Folder [" & strFolder & "] not found." End If Set objFSO = Nothing Else WScript.Echo "Usage: " & WScript.ScriptName & " <folder>" End If WScript.Quit 0 param ( [string]$Folder = "E:\Песочница\0061\*" ) Get-ChildItem -Path $Folder | ` Where-Object -FilterScript { -not $_.PSIsContainer } | ` Group-Object -Property Length | ` Where-Object -FilterScript { $_.Count -gt 1 } | ` ForEach-Object -Process { $_.Group | Select-Object -Skip 1 | Remove-Item -Force } |
||
Отправлено: 11:18, 18-07-2011 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Удаление одинаковых файлов | Tonny_Bennet | Программирование в *nix | 3 | 14-12-2010 16:44 | |
CMD/BAT - Удаление старых файлов по имени файлов | Bиктор | Скриптовые языки администрирования Windows | 1 | 19-04-2010 03:37 | |
CMD/BAT - [решено] Удаление одинаковых подпапок из родительской папки | D_Master | Скриптовые языки администрирования Windows | 2 | 28-03-2009 15:08 | |
удаление одинаковых папок в под папках | clop1000 | Хочу все знать | 5 | 17-11-2007 00:51 | |
Поиск одинаковых файлов | Geo55 | Программное обеспечение Windows | 6 | 23-10-2004 10:01 |
|