
Me gustaría cambiar el nombre y la extensión de todos los archivos que se encuentran en determinados directorios y sus subdirectorios a una combinación aleatoria de 25 signos alfamunéricos (letras y cifras) que es igual al nombre del archivo. La extensión del archivo debe ser ".TEST"
Encontré el siguiente script que solo cambia el nombre en un directorio principal y solo cambia el nombre a un número entero aleatorio.
@ echo off
setlocal EnableDelayedExpansion
for %%F in ("%userprofile%\music\*.*") do (
ren "%%~F" "!RANDOM!.test"
)
endlocal
Entonces, ¿cómo hacerlo con todos los directorios secundarios y la combinación de letras y números?
Respuesta1
coloque /R después de la palabra for
para que recurra a subdirectorios
@ echo off
setlocal EnableDelayedExpansion
for /R "%userprofile%\music\" %%F in (*.*) do (
ren "%%~fF" "%%~fF%RANDOM%.test"
)
endlocal
Vea más detalles sobre el bucle for recursivo aquí:https://ss64.com/nt/for_r.html
para la generación de números aleatorios, incluya el RANDOM entre signos % como %RANDOM%
.https://riptutorial.com/archivo-batch/ejemplo/32511/números-aleatorios
Si desea poner un punto entre el nombre del archivo original y la nueva extensión, intente con ren "%%~fF" "%%~F.%RANDOM%.test"
. en mi sistema formatea nombres comoTextures\Interface\VUI+\solid_black.dds.230.test
para powershell haría algo como (esto es un ensayo; elimine -WhatIf de la línea cuando esté satisfecho de que funciona y desee ejecutar el cambio de nombre)
Get-ChildItem $env:USERPROFILE\music\ -Recurse -File | Rename-Item -WhatIf -NewName { $_.Name + "." + (Get-Random -Maximum 1000)+ ".test"}