使用批次腳本重命名目錄及其子目錄中的所有文件

使用批次腳本重命名目錄及其子目錄中的所有文件

我想將位於某個目錄及其子目錄中的所有檔案的名稱和副檔名重新命名為等於檔案名稱的 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"}

相關內容