O arquivo em lote exclui duplicatas, aninhadas uma vez

0

Sim, eu vi: Excluir arquivos duplicados com o arquivo em lotes do Windows

Mas não consegui modificá-lo para verificar cada subpasta que especifico, tenho:

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

Mas não gosta disso. Eu só preciso ir uma pasta profunda (cada subpasta é um mês) e eu não preciso verificar a raiz Pictures\ .

Eu tentei isso:

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

Mas isso ainda não está correto. Alguém pode me dar uma mão? Tenho uma experiência muito limitada em arquivos em lote.

    
por OJFord 03.07.2013 / 15:56

1 resposta

1

Defina seu %startfolder% real e observe a saída. Se estiver bom, remova echo antes de 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

O código não apaga se os arquivos forem diferentes.

    
por 06.07.2013 / 15:42