|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление одинаковых файлов по размеру |
|
|
CMD/BAT - [решено] Удаление одинаковых файлов по размеру
|
Пользователь Сообщения: 72 |
Профиль | Отправить PM | Цитировать
Добрый день, нужен батник который сравнивал и удалял одинаковые по размеру файлы в одной папке (и оставлял только один).
Сторонние программы не хочу использовать, нужно именно bat. |
|
Отправлено: 10:41, 16-07-2011 |
Старожил Сообщения: 177
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:49, 16-07-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата 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 If objDictionary.Item(objFile.Size) <> "" Then objFSO.DeleteFile objDictionary.Item(objFile.Size), True objDictionary.Item(objFile.Size) = "" End If 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 |
|
Отправлено: 12:41, 16-07-2011 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 13:01, 16-07-2011 | #4 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать root221, мне надо чтоб файлы сравнивались между собой (по размеру), а не по конкретному размеру.
Я, в скриптах нуль. Iska, скрипт полностью удаляет все файлы в папке. |
|
Последний раз редактировалось Arsenik77, 16-07-2011 в 14:58. Отправлено: 14:51, 16-07-2011 | #5 |
Ветеран Сообщения: 1754
|
Arsenik77,
Еще вариант: @echo off setlocal enabledelayedexpansion pushd "c:\test" || goto:eof for /f "tokens=*" %%i in ('dir /b /a-d') do call:1 "%%i" for /f "tokens=2 delims==" %%i in ('set todel_') do echo del %%i %%~zi popd goto:eof :1 if not defined file_%~z1 ( set "file_%~z1=%1" ) else ( echo del !file_%~z1! %~z1 set "file_%~z1=%1" set "todel_%~z1=%1" ) |
Отправлено: 15:07, 16-07-2011 | #6 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать Foreigner, не работает, написал "Непредвиденное появление: .jpg" (сравниваю jpg)
|
Отправлено: 16:11, 16-07-2011 | #7 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Задача не очень четко поставлена. Вот решение, удаляем все одинаковые по размеру файлы.
@Echo Off Set Otkuda=D:\Delete Set S1=-1 FOR /F "usebackq delims=" %%f IN (`Dir /B /A:-D /O:SN "%Otkuda%\"`) DO Call :DelSize "%Otkuda%\%%f" GoTo :Eof :DelSize Set S2=%~z1 If %S1% NEQ %S2% ( Set S1=%S2% Set N1=%1 ) Else ( Del %1 If Exist %N1% Del %N1% ) If Exist %N1% Del %N1% следует удалить. |
------- Отправлено: 16:43, 16-07-2011 | #8 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать Цитата Arsenik77:
|
|
Отправлено: 17:02, 16-07-2011 | #9 |
Ветеран Сообщения: 1754
|
Arsenik77,
Мой батник удаляет все одинаковые по размеру файлы, независимо от расширения. Если есть например три файла размером 123 и семь файлов размером 321, то он их всех удалит, но оставит файл размером 124, т.к. он один такого размера. В батнике надо указать только папку, в которой сравнивать. Цитата Arsenik77:
|
|
Отправлено: 17:13, 16-07-2011 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Удаление одинаковых файлов | 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 |
|