CMD/BAT - [решено] Удаление одинаковых файлов в подкаталогах

Ответить
Аватара пользователя
njg

CMD/BAT - [решено] Удаление одинаковых файлов в подкаталогах

Сообщение njg »

Решил почистить резервные копии от дубликатов. Задача в следующем:

Необходимо сравнить все *.rar-файлы в "сегодняшнем" каталоге с файлами во всех "старых" каталогах и удалить одинаковые по размеру (удалять только из папок со старыми резервными копиями, в текущей не трогать).

Резервные копии лежат в папках типа "_backup_2011-11-17" и создаются каждый день, кроме выходных.

Название "сегодняшнего" каталога было бы удобно передавать в скрипт в качестве параметра.



Нашел скрипт от
CMD/BAT - [решено] Удаление одинаковых файлов по размеру
, но не смог адаптировать его под перебор фалов в подкаталогах. Прошу помощи.





Код:

Код: Выделить всё

@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%
)
Аватара пользователя
njg

Re: CMD/BAT - [решено] Удаление одинаковых файлов в подкаталогах

Сообщение njg »

Осилил свою задумку. Посмотрите что получилось. Если есть ошибки или неточности, исправьте, пожалуйста.





Код:

Код: Выделить всё

@echo off
SET FOLDERNAME=_BackUp_%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%
echo.
echo Удаление дубликатов:
For %%I In ("%FOLDERNAME%\*.rar") Do (
  call :deldub "%%~I"
)
echo.
pause
exit /b 0
rem ==========================================================================
rem ==========================================================================
:deldub
REM Процедура сравнения и удаления дубликатов
For /F "UseBackQ Delims=" %%I In (`Dir _BackUp_* /AD /B /ON 2^>nul`) Do (
  If /I %%~I NEQ %FOLDERNAME% (
    For %%J In ("%%~I\*.rar") Do (
      If /I "%%~nxJ" EQU "%~nx1" (
        If /I "%%~zJ" EQU "%~z1" (
          del /F "%%~J"
          Echo Удален %%~J 
        ) 
      )
    )
  )
)
exit /b 0
rem ==========================================================================
Ответить

Вернуться в «Скриптовые языки администрирования Windows»