Ich habe viele Dateien in einem Ordner, aber sie beginnen alle mit einer Zahlenreihe und sind durch ein "_" vom eigentlichen Dateinamen getrennt.
Zum Beispiel:
123123123_Dateiname.txt
456456456_Dateiname2.txt
789789789_Dateiname3.txt
Ich kann mir vorstellen, dass Sie eine Art Befehl ausführen können, der die Zeichen vor dem „_“ und das „_“ selbst entfernt.
Jede Hilfe wird sehr geschätzt!
Antwort1
Wenn Sie mit PowerShell nicht vertraut sind, können Sie sich kostenlose Dienstprogramme ansehen, beispielsweise die folgenden: http://www.bulkrenameutility.co.uk/Download.php
Antwort2
Wenn Sie nur die Zeichen für eine Auflistung entfernen möchten, können Sie Folgendes in eine Batchdatei einfügen und das entsprechende Verzeichnis anstelle von ersetzendirname
for /f "tokens=2 delims=_" %%G in ('dir /b dirname') do @echo %%G
Das dir /b
erzeugt eine Verzeichnisliste im einfachen Format (ohne Überschrifteninformationen oder Zusammenfassung). Das delims=_
gibt an, dass der Unterstrich als Trennzeichen verwendet werden soll, und das tokens=2
gibt an, dass Sie wissen möchten, was nach dem Unterstrich steht. SieheFÜR/Ffür eine ausführlichere Erklärung zur Verwendung FOR /F
in einer Batchdatei.
Wenn Sie die Dateien jedoch ohne Zahlen und Unterstrich umbenennen möchten, haben Sie in Ihrem Beispiel zwei Dateien, die denselben Namen ergeben würden, filename2.txt
wenn die Zahlen und der Unterstrich entfernt würden. Was möchten Sie in diesem Fall tun? Oder wollten Sie filename3.txt für die dritte Datei verwenden?
Wenn auf den Unterstrich ein eindeutiger Name folgt, können Sie die Dateien wie folgt umbenennen und das entsprechende Verzeichnis durchrelevantesVerzeichnis:
set dirname="relevantdir"
for /f "tokens=1,2 delims=_" %%G in ('dir /b %dirname%') do rename %dirname%\%%G_%%H %%H
Im obigen Fall ist das erste Token, %%G
, das, was vor dem Unterstrich steht, und das zweite Token, %%H
das, was nach dem Unterstrich steht. Ich habe sie für die Umbenennungsoperation wieder zusammengesetzt und ihnen das Verzeichnis vorangestellt, da der Umbenennungsbefehl die Syntax verwendet RENAME [drive:][path]filename1 filename2
.
Wenn Sie nicht jede Umbenennungsoperation sehen möchten, während sie erfolgt, fügen Sie vor dem Befehl ein @echo off
als erste Zeile in der Batchdatei ein.set
Antwort3
powershell
ls "*_*.txt" | %{mv -confirm:$false $_.name ($_.name).split("_")[1]}
Unter Win8 sollte Powershell vorzuziehen sein.
Antwort4
PowerShell: Angenommen, alle Dateien im Ordner müssen umbenannt werden (wie OP andeutet):
$Folder = 'c:\path\to\folder'
gci $Folder | Rename-Item -NewName { $_.Name.Split('_')[-1] }