약 50개의 파일(NAME1.jpg, NAME2.jpg, NAME3.jpg...)이 들어 있는 폴더가 있습니다.
실행되는 프로그램이 있고 각 파일을 약 4개의 다른 파일로 분할하고 이름을 다시 지정합니다(NAME1-0.jpg, NAME1-1.jpg, NAME2-0.jpg, NAME2-1.jpg...).
*-0.jpg 파일이 아닌 모든 파일을 실행하고 삭제하는 .bat 파일을 만들고 싶습니다.
지금까지 내가 가장 가까운 것은 다음과 같습니다.
for %i in (*) do if not %i == "*.jpg" del "%i"
하지만 이렇게 하면 저장하려는 -0.jpg 파일을 포함하여 폴더의 모든 파일이 삭제됩니다.
사용하기에 더 좋은 라인이 있나요?
답변1
*-0.jpg 파일이 아닌 파일을 모두 삭제하고 싶어요.
실행되는 프로그램이 있고 각 파일을 약 4개의 다른 파일로 분할하고 이름을 다시 지정합니다(NAME1-0.jpg, NAME1-1.jpg, NAME2-0.jpg, NAME2-1.jpg...).
다음 배치 파일(test.cmd)을 사용합니다.
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir /b NAME?-?.jpg') do (
rem get file name
set _fname=%%~ni
rem get last 2 characters of file name
set _last2=!_fname:~-2!
if [!_last2!] NEQ [-0] del "%%i"
)
예:
F:\test>dir *.jpg
Volume in drive F is Expansion
Volume Serial Number is 3656-BB63
Directory of F:\test
08/12/2015 23:51 0 NAME1-0.jpg
08/12/2015 23:51 0 NAME1-1.jpg
08/12/2015 23:51 0 NAME2-0.jpg
08/12/2015 23:51 0 NAME2-1.jpg
4 File(s) 0 bytes
0 Dir(s) 1,776,919,613,440 bytes free
F:\test>test
F:\test>dir *.jpg
Volume in drive F is Expansion
Volume Serial Number is 3656-BB63
Directory of F:\test
08/12/2015 23:51 0 NAME1-0.jpg
08/12/2015 23:51 0 NAME2-0.jpg
2 File(s) 0 bytes
0 Dir(s) 1,776,919,613,440 bytes free