
Ich möchte den Namen und die Erweiterung aller Dateien, die sich in einem bestimmten Verzeichnis und dessen Unterverzeichnissen befinden, in eine zufällige Kombination aus 25 alphanumerischen Zeichen (Buchstaben und Zahlen) umbenennen, die dem Dateinamen entspricht. Die Dateierweiterung sollte ".TEST" sein.
Ich habe das folgende Skript gefunden, das nur in einem übergeordneten Verzeichnis umbenennt und den Namen nur in eine zufällige Ganzzahl ändert.
@ echo off
setlocal EnableDelayedExpansion
for %%F in ("%userprofile%\music\*.*") do (
ren "%%~F" "!RANDOM!.test"
)
endlocal
Wie also geht das mit allen Unterverzeichnissen und der Buchstaben-Zahlen-Kombination?
Antwort1
Setzen Sie /R nach dem Wort for
, damit es in Unterverzeichnisse rekursiv ist
@ echo off
setlocal EnableDelayedExpansion
for /R "%userprofile%\music\" %%F in (*.*) do (
ren "%%~fF" "%%~fF%RANDOM%.test"
)
endlocal
Weitere Einzelheiten zur rekursiven For-Schleife finden Sie hier:https://ss64.com/nt/for_r.html
Um Zufallszahlen zu generieren, schließen Sie RANDOM in %-Zeichen ein %RANDOM%
, z. B. .https://riptutorial.com/batch-file/example/32511/zufallszahlen
Wenn Sie einen Punkt zwischen den ursprünglichen Dateinamen und die neue Erweiterung setzen möchten, versuchen Sie es mit ren "%%~fF" "%%~F.%RANDOM%.test"
. Auf meinem System werden Namen wie folgt formatiert:Textures\Interface\VUI+\solid_black.dds.230.test
für Powershell würde ich so etwas tun wie (Dies ist ein Probelauf. Entfernen Sie -WhatIf aus der Zeile, wenn Sie zufrieden sind, dass es funktioniert und Sie die Umbenennung tatsächlich durchführen möchten.)
Get-ChildItem $env:USERPROFILE\music\ -Recurse -File | Rename-Item -WhatIf -NewName { $_.Name + "." + (Get-Random -Maximum 1000)+ ".test"}