임의의 영숫자로 된 접미사가있는 일괄 파일 이름 바꾸기


1

다음은 폴더의 모든 파일의 이름을 영숫자로 바꾸는 코드입니다.

@echo off
setlocal disableDelayedExpansion
set "chars=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for /f "eol=: delims=" %%F in ('dir /b /a-d *.jpg') do call :renameFile "%%F"
exit /b

:renameFile
setlocal enableDelayedExpansion
:retry
set "name="
for /l %%N in (1 1 8) do (
  set /a I=!random!%%36
  for %%I in (!I!) do set "name=!name!!chars:~%%I,1!"
)
echo if exist !name!.jpg goto :retry
endlocal & ren %1 %name%.jpg

이 코드를 복사 / 붙여 넣기하고 .bat 파일로 저장하고 파일 이름을 바꿀 폴더에 저장하기 만하면됩니다.

작동 방식은 다음과 같습니다.

예 : filename이 lenovo-wallpaper.jpg 인 경우 AF45ASLJ.JPG로 이름을 바꿉니다.

내가 원하는 건 filename + alphanumeric.jpg입니다.

예 : 파일 이름이 lenovo-wallpaper.jpg 인 경우 lenovo-wallpaper-adfs45fad1.jpg이어야합니다.


1
프로그래밍 질문은 물론, 질문하지 않았습니다. 코드에 문제가있는 경우 예상되는 동작이 무엇인지, 어떻게 실패했는지, 그리고 어떻게 수행했는지 정확하게 기술해야합니다.
dbenham

1
@dbenham 실제로 그는 "문제"가 있습니다. 너의 암호. 그것은에서 해제되었습니다. 임의의 영숫자로 배치 파일 이름 바꾸기 ;)
DavidPostill

답변:


1

마지막 두 줄을에서

echo if exist !name!.jpg goto :retry
endlocal & ren %1 %name%.jpg

echo if exist %~n1+!name!.jpg goto :retry
endlocal & ren %1 %~n1+%name%.jpg

%~n1 확장자가없는 파일 이름을 가져온 다음 + 새 변수 이름 앞에.

편집 : 첫 번째 문자의 대문자와 JPG, BMP, PNG 및 GIF 파일을 캡처와 배치를 완료

@echo off
setlocal disableDelayedExpansion
set "chars=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for /f "eol=: delims=" %%F in ('dir /b /a-d *.jpg *.png *.bmp *.gif') do call :renameFile "%%F"
exit /b

:renameFile
setlocal enableDelayedExpansion
:retry
set "name="
for /l %%N in (1 1 8) do (
  set /a I=!random!%%36
  for %%I in (!I!) do set "name=!name!!chars:~%%I,1!"
)
echo if exist %~n1+!name!.jpg goto :retry
call :FirstUp result %~n1
endlocal & ren %1 %result%+%name%.*

exit /b

:FirstUp
setlocal EnableDelayedExpansion
set "temp=%~2"
set "helper=##AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ"
set "first=!helper:*%temp:~0,1%=!"
set "first=!first:~0,1!"
if "!first!"=="#" set "first=!temp:~0,1!"
set "temp=!first!!temp:~1!"
(
    endlocal
    set "result=%temp%"
    goto :eof
)

작은 상세 검색 : 사용하는 경우 .* 새 이름에서 확장의 경우가 유지됩니다 (즉, ren %1 %~n1+%name%.* ).
AFH

@AFH 사실, 나는 훨씬 더 수정하고 싶지 않았다. (.jpg 파일 만이 for 루프에 의해 어쨌든 잡혔다.) :)
Jonno

나는 깨달았다. 그러나 기존의 코드는 Name.JPGName+8chars.jpg. 그 논평은 당신에게 질문자에게 많은 것을 지시했습니다.
AFH

@AFH 이해 :)
Jonno

jpg, gif, png, bmp와 같은 모든 이미지 확장을 수정할 수 있습니까?
Dilip
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.