alle Dateien in einem Verzeichnis und seinen Unterverzeichnissen mit einem Batch-Skript umbenennen

alle Dateien in einem Verzeichnis und seinen Unterverzeichnissen mit einem Batch-Skript umbenennen

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"}

verwandte Informationen