
특정 디렉터리와 그 하위 디렉터리에 있는 모든 파일의 이름과 확장자를 파일 이름과 동일한 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"}