Да, я видел: Удалить дубликаты файлов с помощью пакетного файла Windows

Но я не смог изменить его, чтобы проверить каждую вложенную папку, которую я указал, у меня есть:

del "c:\...\Pictures\*\*-001.*"

Но это не нравится. Мне нужно только углубиться в одну папку (каждая подпапка - месяц), и мне не нужно проверять Pictures\ root.

Я пробовал это:

FOR %%F IN ("C:\...\Pictures\") DO FOR %%f IN ("C:\...\Pictures\%%F\*-001.JPG") del "%%f"

Но это все еще не правильно. Кто-нибудь может мне помочь? У меня очень ограниченный опыт работы с пакетными файлами.

1 ответ1

1

Установите реальный %startfolder% и посмотрите на результат. Если это хорошо, удалите echo перед del:

@echo off &SETLOCAL
SET "startfolder=."

FOR /r "%startfolder%" %%i IN (*) DO call:doit "%%~i"
goto:eof

:doit
SET "fname=%~nx1"
SETLOCAL ENABLEDELAYEDEXPANSION
SET "fsize=!$%fname%!"
IF DEFINED $!fname! (
     ENDLOCAL
     IF "%fsize%"=="%~z1" ECHO DEL "%~1"
) ELSE (
     ENDLOCAL
     SET "$%~nx1=%~z1"
)
goto:eof

Код не удаляется, если размеры файлов отличаются.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .