Umbenennen mehrerer Ordner Reduzieren auf die ersten x Zeichen

1496
Tim

Einfaches Beispiel: (Mein Problem betrifft Tausende Ordner)

Ich habe zwei Ordner mit den Namen:

"A0000001_words_letters"

"A0000002_lots_of_numbers"

Wie würde ich automatisch alle Ordnernamen so beschneiden, dass sie nur den Start von AXXXXXXX enthalten. Dieser Anfang wird immer dieselbe Anzahl von Zeichen sein, so dass die ersten x Zeichen des Namens effektiv beibehalten werden.

Vielen Dank

2
Bekommst du eine meiner Nachrichten? Haben Sie [Annehmen einer Antwort] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) so verstanden, dass Sie verstehen, wie das funktioniert? Pimp Juice IT vor 6 Jahren 0

2 Antworten auf die Frage

0
Pimp Juice IT

Sie können eine FOR / F- Schleife verwenden, um Trennzeichen und Teile für die Parsing-Ordnernamen festzulegen, und um Variablen für die spätere Verwendung mit dem Befehl REN festzulegen.

Sie möchten auch Setlocal EnableDelayedExpansion verwenden, um die Erweiterung der in der Schleife festgelegten Variablen entsprechend zu handhaben (nicht zur Laufzeit analysiert), indem der Befehl umbenennen pro Iteration innerhalb der Schleife verwendet wird.

@ECHO  SET srcdir=C:\folder\path SETLOCAL ENABLEDELAYEDEXPANSION FOR /F "TOKENS=*" %%F IN ('DIR /B /AD "%srcdir%\*"') DO ( SET fname=%%~F SET fname=!fname:~0,8! SET fname=!fname! REN "%srcdir%\%%~XNF" "!fname!" ) EXIT 

Weitere Ressourcen

0
dbenham

Wenn _nach den ersten x-Zeichen immer ein Nachfolger steht, funktionieren die folgenden Befehle von der Befehlszeile aus (kein Stapel erforderlich)

for /d %A in (*) do @for /f "delims=_ eol=_" %B in ("%A") do ren "%A" "%B" 

Verdoppeln Sie die Prozentsätze, wenn Sie den obigen Befehl in ein Stapelskript einfügen.

Wenn Sie sich nicht auf _die ersten x Zeichen verlassen können, sollte dieser Befehl über die Befehlszeile ausgeführt werden, wobei die ersten 8 Zeichen erhalten bleiben:

for /d %A in (*) do @set "folder=%A"&call ren "%^folder%" "%^folder:~0,8%" 

Oder Sie können diesen Batch-Scrip verwenden, um die ersten 8 Zeichen zu erhalten:

@echo off setlocal disableDelayedExpansion for /d %%A in (*) do ( set "folder=%%A" setlocal enableDelayedExpansion ren "!folder!" "!folder:~0,8!" endlocal ) 

Oder Sie können mein JREN.BAT-Dienstprogramm zum Umbenennen von regulären Ausdrücken verwenden . Es ist ein reines Skript (Hybrid Batch / JScript), das nativ auf einem Windows-Computer ab XP ausgeführt wird - es ist keine Drittanbieter-Exe-Datei erforderlich.

Entfernen Sie alles von Anfang _an

jren "_.*" "" /d 

Erhalten Sie die ersten 8 Zeichen

jren "^(.).*" "$1" /d 

Hinweis: Wenn Sie versuchen, Dateien anstelle von Ordnern umzubenennen, können Sie Folgendes tun

ren *.txt ????????.txt 

Leider können Sie beim Umbenennen von Ordnern keine Platzhalter verwenden. Diese Technik ist also für Ordner unbrauchbar. Siehe Wie interpretiert der Windows RENAME-Befehl Platzhalterzeichen? Für mehr Information.