我想将位于特定目录及其子目录中的所有文件的名称和扩展名重命名为 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"}