Wie Sie batch-umbenennen von Dateien in einem Verzeichnis aus einer Liste von Namen in einer text Datei
Ich würde gerne mit Power Shell oder batch Datei zum umbenennen von mehreren Dateien in einem Ordner mit einer Liste in eine text-Datei. Im wesentlichen möchte ich anfügen, die Datei-Namen mit des Autors Nachnamen (was ich gespeichert habe in eine separate text-Datei).
E. g. Derzeit habe ich:
C:\myfiles
9-ART-2013.pdf
4-EGO-2013.pdf
2-ART-2013.pdf
Meine text-Datei (in gleicher Reihenfolge wie Dateien):
C:\myfiles
_Smith
_Jenkins
_McMaster
Ich soll die Dateien werden wie folgt umbenannt:
9-ART-2013_Smith.pdf
4-EGO-2013_Jenkins.pdf
2-ART-2013_McMaster.pdf
Ich habe gesehen, ähnliche Probleme, wo die Menschen wollen, um rekursiv umbenennen von Dateien, aber Sie sind immer mit einem generischen gemeinsamen Anhängen von element wie das hinzufügen eines Unterstrichs oder pre-pending Ordner mit dem Namen, etc.
z.B. https://serverfault.com/questions/6268/easy-way-to-rename-all-files-in-a-directory-in-windows
- Wie ist das Skript soll feststellen, welche Zeile in der Textdatei entspricht, welche mit dem Namen?
- Sind die Dateien sortiert werden in dem Verzeichnis? In welcher Weise?
Reverse-alphabetic
wie pro Ihre Liste? - Ich war die Planung auf nur manuell stellen Sie sicher, dass der Artikel, um meine text-Datei entspricht der Ordner-Reihenfolge (assending). Ich habe eine excel-Datei mit einer Spalte für Dateiname und eine weitere Spalte für die entsprechende author_name.
- Ich erkannte, dass ich rahmte die vorgeschlagene Lösung falsch. die Lösung wäre robuster auf Fehler (mit dem "file name" auf "Autor"), um einfach eine text-Datei mit einer "ALTEN-Name | NEUER Name" - Struktur. 9-ART-2013.pdf | 9-KUNST-2013_Smith.pdf-4-EGO-2013.pdf - | 4-EGO-2013_Jenkins.pdf-2-ART-2013.pdf | 2-KUNST-2013_McMaster.pdf, Dann könnte ich einfach anrufen, jede Zeile aus der text-Datei mit "For /f" und "Ren". Ich wollte versuchen, die Lösungen unten und geben Sie Ihre Kommentare unter.
- Erlauben Sie mir, reframe Ihr problem. Es ist viel besser, speichern Sie die beiden Spalten in Ihrer excel-Tabelle nebeneinander in einer einzigen text-Datei, vielleicht getrennt durch ein Komma. Es ist dann einfach zu importieren dieser csv-Datei in ein array von benutzerdefinierten Objekten, und leiten Sie diese zu einer Schleife berechnet die neuen Namen für jedes Element, und führt dann eine Umbenennen-Objekt, um das Ergebnis zu erhalten. Von Ihrem vorherigen Kommentar, sieht aus wie Sie fuhren in diese Richtung.
- Dumping eine Tabelle in eine CSV-Datei ist einfach in Excel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der PowerShell wäre es:
Wenn es aussieht wie es wird korrekt kopiert wird, entfernen Sie die
-WhatIf
.;
vorGet-ChildItem
zu trennen diese beiden Aussagen.Einen anderen Weg, das gleiche zu erreichen:
BEARBEITEN: Neue Methode Hinzugefügt
Wenn die Liste der Namen der Datei haben die "OLD-Name NEW-Name" - Struktur, dann ist der code viel einfacher:
Beachten Sie, dass die Namen müssen durch ein Leerzeichen getrennt werden.
/o-d
auf, dassDIR
und dann eine Maske der*-*-*.pdf may be useful. Finally, a
delims " von_
mit einemtokens=1,2
erlauben würdeif "%%b"==""
heraus zu filtern, die bereits umbenannte Dateien...if "%%b==""
nach derDO
sonst ein Eingang line wäre gegessen, wenn%%b
ist NICHT leer...Unter Endoro und Vereinfachung:
Alle der oben genannten sind wahrscheinlich praktikabler Lösungen, mit nur ein wenig Feintuning, aber die einfachste Sache zu tun war, um einfach erstellen Sie eine Textdatei, in der jede Zeile "das aktuelle mit dem Namen"... ein REGISTER... und dann der mit dem Namen den ich wollte".
Dann speichern Sie die Datei als rename_list.txt und erstellen Sie eine batch-Datei mit dem folgenden code.
Können Sie löschen Sie die pause-Zeile, wenn Sie es bekommen gezwickt und korrekt ausgeführt werden. Kopieren Sie einfach die rename_list.txt und batch-Dateien in den Ordner mit den Dateien, die Sie umbenennen möchten, und führen Sie die batch-Datei. Wenn Sie einen großen Ordner mit vielen Dateien Namen, die Sie bekommen können Sie in eine text-Datei durch ausführen einer batch-Datei mit der folgenden Zeile.
Wird es erstellt eine text-Datei filename_scrapper_output.txt, die Sie verwenden können, starten Sie Ihren rename_list.txt Datei oben.