バッチスクリプトを使用して、ディレクトリとそのサブディレクトリ内のすべてのファイルの名前を変更します。

バッチスクリプトを使用して、ディレクトリとそのサブディレクトリ内のすべてのファイルの名前を変更します。

特定のディレクトリとそのサブディレクトリにあるすべてのファイルの名前と拡張子を、ファイル名と同じ 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/ランダム番号

元のファイル名と新しい拡張子の間にドットを入れたい場合は、.を試してください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"}

関連情報