배치 스크립트를 사용하여 디렉터리 및 하위 디렉터리 내의 모든 파일 이름 바꾸기

배치 스크립트를 사용하여 디렉터리 및 하위 디렉터리 내의 모든 파일 이름 바꾸기

특정 디렉터리와 그 하위 디렉터리에 있는 모든 파일의 이름과 확장자를 파일 이름과 동일한 25개의 영숫자 기호(문자 및 숫자)의 무작위 조합으로 바꾸고 싶습니다. 파일 확장자는 ".TEST"여야 합니다.

상위 디렉토리에서만 이름을 바꾸고 이름을 임의의 정수로만 변경하는 다음 스크립트를 찾았습니다.

@ echo off
setlocal EnableDelayedExpansion
for %%F in ("%userprofile%\music\*.*") do (
    ren "%%~F" "!RANDOM!.test"
)
endlocal

그렇다면 모든 하위 디렉토리와 문자와 숫자의 조합을 사용하여 이를 수행하는 방법은 무엇입니까?

답변1

단어 뒤에 /R을 입력 for하면 하위 디렉터리로 반복됩니다.

@ echo off
setlocal EnableDelayedExpansion
for /R "%userprofile%\music\" %%F in (*.*) do (
    ren "%%~fF" "%%~fF%RANDOM%.test"
)
endlocal

재귀 for 루프에 대한 자세한 내용은 여기를 참조하세요.https://ss64.com/nt/for_r.html

난수 생성의 경우 RANDOM을 와 같이 % 기호로 묶습니다 %RANDOM%.https://riptutorial.com/batch-file/example/32511/random-numbers

원래 파일 이름과 새 확장자 사이에 점을 넣으려면 ren "%%~fF" "%%~F.%RANDOM%.test". 내 시스템에서는 다음과 같은 이름 형식을 지정합니다.Textures\Interface\VUI+\solid_black.dds.230.test

powershell의 경우 다음과 같은 작업을 수행합니다(이것은 드라이런입니다. 만족스러우면 줄에서 -WhatIf를 제거하고 실제로 이름 바꾸기를 실행하려고 합니다.)

Get-ChildItem $env:USERPROFILE\music\ -Recurse -File | Rename-Item -WhatIf -NewName { $_.Name + "." + (Get-Random -Maximum 1000)+ ".test"}

관련 정보