WIndows 배치로 파일 크기를 기준으로 중복 파일 삭제


3

마지막 숫자가 다른 숫자를 제외하고 비슷한 이름을 가진 디렉토리 (하위 디렉토리 포함)에 많은 파일이 있습니다. 가장 큰 파일 크기로 버전을 유지하고 싶습니다. 그러나 일부 파일에는 중복이 없지만 해당 파일을 유지해야합니다.

파일은 다음과 같습니다

111~1.mp4    (1mb)
111~2.mp4    (5mb)
111~3.mp4    (2mb)

222~1.mp4    (3mb)

333~1.mp4    (2mb)
333~2.mp4    (4mb)

444~1.mp4    (1mb)
444~2.mp4    (5mb)
444~3.mp4    (3mb)
444~4.mp4    (7mb)

가장 큰 버전 크기 만 유지하고 싶습니다.

111~2.mp4    (5mb)

222~1.mp4    (3mb)

333~2.mp4    (4mb)

444~4.mp4    (7mb)

나는 혼란에 빠졌고, 나는 찾고 있었지만 지금까지 한 일을 처리 할 수는 없었지만 파일의 크기를 얻을 수있다.

set "filename=*.*"
for %%A in (%filename%) do echo.Size of "%%A" is %%~zA bytes

그러나 이제 중복을 서로 비교하고 더 작은 크기의 버전을 삭제하고 더 큰 크기의 버전 만 유지하고 중복되지 않은 경우 해당 버전을 유지해야합니다.

답변:


4

이것은 일을해야합니다 :

@ECHO OFF
SETLOCAL EnableDelayedExpansion



REM **************************************************

REM Source directory
SET source=C:\adjust\path\to\folder

REM Set folder name
SET folder_name=folder

REM **************************************************



REM Creating a new directory to sort out files
IF NOT EXIST "%source% TEMP" MD "%source% TEMP"

REM Sorting out files without duplicates
FOR /F "tokens=1,* delims=~" %%A IN ('DIR /S/B/A-D "%source%"') DO (
    IF NOT EXIST "%%~fA~2%%~xB" COPY "%%~fA~1%%~xB" "%source% TEMP\%%~nxA~1%%~xB" >nul 2>&1
)

REM Sorting out files with biggest size
FOR /F "tokens=1,* delims=~" %%F IN ('DIR /S/B/A-D "%source%"') DO (
    SET path=%%~dpF
    SET name_1=%%~nF~
    FOR /F "delims=" %%A IN ('DIR "%%~fF*" /S/B/O:-S') DO (SET biggest=%%A && CALL :copy)
)

REM Deleting all duplicates
RD /S /Q "%source%"

REM Renaming TEMP to source
REN "%source% TEMP" "%folder_name%"
CLS
ECHO.
ECHO  Done^^!
ECHO.
PAUSE



:copy
SET name_2=%biggest:*~=%
COPY "%biggest%" "%source% TEMP\%name_1%%name_2%" >nul 2>&1 && DEL "%path%%name_1%*" >nul 2>&1
EXIT /B

주의 사항 : 전체 폴더가 삭제되고 그에 따라 임시 폴더의 이름이 바뀝니다. ~이름 이없는 파일이 있으면 해당 파일이 삭제됩니다 !!!


@JuanLopez 다행입니다. :)
FatalBulletHit
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.