2013-02-28 2 views
0

여러 파일을 피드로 제공 할 때 파일 크기를 비교하고 큰 파일을 삭제할 멋진 스크립트를 찾고 있습니다.일괄 처리 비슷한 이름의 두 파일을 비교하고 더 큰 여러 번 삭제합니다.

나는 JPG 및 PNG 형식으로 동일한 이미지 파일 집합을 가지고 있으며 각 개별 이미지에 대해 두 가지 중 작은 것을 유지하기를 원합니다. 각각의 이미지는 image-01.jpg와 image-01.png가 쌍을 이루는 것과 비슷하게 image-02.jpg와 image-02.png가 쌍을 이룬다. 일부 이미지는 PNG로만 존재합니다 (예 : image-03.png가 있지만 image-03.jpg는 해당하지 않음). 이러한 이미지는 삭제하거나 "다음 이미지"와 비교해서는 안됩니다.

이름은 다를 수 있지만 일반적으로 세트는 매우 균일합니다. 한 번에 수백 개의 파일을 비교할 수 있기 때문에 두 개와 두 개의 이미지 만 입력해야한다면 수동으로 비교하는 것이 더 빠를 것입니다. 현재 수행하고있는 작업입니다.

+0

파일이 모두 같은 폴더에 있습니까? – TimH

+0

예, 필자는 비교할 파일 세트를 끌어다 놓을 것을 지시했습니다. –

+0

다음과 같은 명령을 사용하여 Windows 배치 파일에서 실행할 수있는 JScript를 조사해야합니다. cscript // B scriptname.js – TimH

답변

1

나는 약간의 도움을 얻었고 이전의 코멘트에 올린 코드에 한 줄을 추가했다. 나는 또한 코드를 조금 닦았다.

다음 코드가 내 문제를 해결했습니다. 파일을 코드에 넣으면 두 파일의 이름이 같을 때마다 가장 큰 파일이 삭제됩니다.. 파일이 제대로 작동하려면 정렬 된 순서로 파일을 전달해야합니다. 나는 인수에 대한 효율적인 정렬 알고리즘을 작성하는 방법을 모른다. 이것은 어려운 일이 아니지만 누군가가 도전 과제에 대해 글을 쓰고 싶다면 그것을 보는 것이 행복 할 것입니다.

@echo off 

:BEGIN 
if "%~2" == "" goto END 
echo Comparing %~n1 and %~n2... 
if not "%~n1" == "%~n2" (echo Names don't match.) && goto NOMATCH 
echo Names match! Comparing filesize... 
if %~z1 gtr %~z2 (
    (echo *** Keeping %~2 ^(%~z2 bytes^) ***) 
    (echo *** Deleting %~1 ^(%~z1 bytes^) ***) 
    del "%~1". 
) else (
    (echo *** Keeping %~1 ^(%~z1 bytes^) ***) 
    (echo *** Deleting %~2 ^(%~z2 bytes^) ***) 
    del "%~2". 
) 
:NOMATCH 
echo. 
shift 
goto BEGIN 
:END 
pause 
+0

나는 bash (linux)와 비슷한 것을하고 싶지만 하나의 폴더에 동일한 basename을 가진 수많은 쌍을 가지고있다. –