(Result) 폴더 옆에 .bat 파일이 있습니다.
폴더에는 다른 이름의 .jpg 파일이 포함되어 있습니다.
이 폴더에 있는 모든 파일의 이름을 바꾸도록 .bat 파일을 작성하려고 합니다.
작동하지만 완전히는 아닙니다. 문제는 다음과 같습니다.
파일이 있는 디렉터리에서만 작동합니다.
(.bat 파일과 그 옆에 파일이 있는 폴더가 필요합니다. 이것이 작동하려면)
setlocal enabledelayedexpansion
set "count=1000"
set a="Result\*.jpg"
for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc %a%`) do (ren "%%f" file-!count:~1!.jpg
set /a count+=1
)
pause
답변1
여기에 해결책이 있습니다..
경로를 작성하면 해당 폴더로 이동할 수 있습니다.cd / d Result
setlocal enabledelayedexpansion
cd /d Result
set "count=1000"
set a="*.jpg"
for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc %a%`) do (ren "%%f" file-!count:~1!.jpg
set /a count+=1
)
pause
SetLocal EnableDelayedExpansion부호를 통한 변수 확장(!)
CD / D 결과결과 폴더로 이동
"개수 = 1000"으로 설정0의 수를 표시한 변수파일-001.jpg
a = "*.jpg"로 설정변수는 우리가 찾고 있는 파일을 나타냅니다.
( dir /b /o:-d /tc %a%
)
디렉토리- 파일 및 하위 디렉터리 목록을 표시합니다. 다음으로 정렬합니다.
/비- 파일 이름만 표시합니다.
/o:-d- 표시된 파일 목록을 역순(최신 파일부터 오래된 파일까지)으로 정렬합니다.
/tc- 파일 생성 시간을 기준으로 정렬합니다.
%ㅏ%- 변수를 호출합니다.
사용백q파일 이름에 따옴표를 사용하는 기능을 설정합니다.이렇게> ".
역따옴표로 묶인 문자열을 명령으로 실행하도록 지정합니다.이렇게> `,
작은따옴표 안의 문자열은 문자열의 명령과 같습니다.이렇게> '.
구분 = xxx구분 기호 집합을 지정합니다. 기본 공백 탭 구분 기호 세트를 재정의합니다.
답변2
귀하의 질문은 제게는 명확하지 않습니다(제 영어 실력은 약하고 서투릅니다). 다음 내용이 무엇인지 이해가 되지 않습니다.
파일이 있는 디렉터리에서만 작동합니다.
(.bat 파일과 그 옆에 파일이 있는 폴더가 필요합니다. 이것이 작동하려면)
- 재귀적으로 이름을 바꾸고 싶다고 가정합니다. 이에 대한 편집 내용은 다음과 같습니다.
@echo off
set "_cnt=1000" && cd /d "%~dp0Result"
for /f tokens^=* %%I in ('dir /o:-d /tc /b /s *.jpg
')do set /a "_cnt+=1" && cmd /v /c "ren "%%~fI" file-!_cnt:~-3!.jpg"
%__AppDir__%timeout.exe /t -1 & goto :EOF
1.박쥐가 있는 폴더를 입력하세요.
cd /d "%~dp0Result"
2.재귀적으로 파일 나열dir ... /b /s
for /f tokens^=* %%I in ('dir /o:-d /tc /b /s *.jpg
삼.회계사를 늘리세요
set /a "_cnt+=1"
4.카운터를 사용하여 루프에서 파일 이름을 바꾸십시오.
cmd/v/c "ren "%%~fI" file-!_cnt:~-3!.jpg"
관찰제가 찾고 있는 내용과 거리가 멀다면 알려주세요...
- 귀하의 답변에 따른 대안
@echo off
setlocal enabledelayedexpansion
set "_cnt=100" && cd /d "%~dp0"
for /f tokens^=* %%I in ('dir/b/o:-d/tc/b/s "Result\*.jpg"
')do rename "%%~fI" file-!_cnt:~-3!.jpg & set /a "_cnt+=1"
%__AppDir__%timeout.exe /t -1 & endlocal & goto :EOF