Umbenennen von Dateien in Windows um sequenziell neue Namen zu generieren

574
Densetsu

Ich brauche Hilfe zum Umbenennen einiger Dateinamen. Ich habe rund 300 Verzeichnisse. Alle Dateien sind Word- .docxDateien und müssen nach dem Umbenennen Word-Dateien bleiben.

In jedem Ordner habe ich zwischen 1 und 20 Dateien ( nie mehr als 26). Ich muss sie in eine bestimmte Reihenfolge bringen (idealerweise alphabetisch nach ihrem aktuellen Namen) und sie umbenennen, um diesem Muster zu folgen:

Example A.docx Example B.docx Example C.docx etc.  

Ich kann keine externe Software verwenden, nur das Terminal.

-2
Ihre Frage ist nicht klar. Sie möchten jeden Ordner durchgehen und dann für die erste Datei den Namen "Beispiel A", die zweite Datei "Beispiel B" usw. angeben? Welche Reihenfolge soll angewendet werden? Was soll passieren, wenn mehr als 26 Dateien vorhanden sind? Was hast du schon probiert? Wo bist du festgefahren? slhck vor 6 Jahren 0
Haben Sie die Verwendung des Befehls forfiles in der Befehlszeile untersucht? Trenly vor 6 Jahren 0
Recherchieren Sie über "* Piping-Befehle durch eine FOR / F-Schleife *". Sie möchten vielleicht den `DIR / S / B`-Befehl verwenden und vergessen Sie nicht," "TOKENS = *" "oder vielleicht" DELIMS = "zu verwenden, um Leerzeichen als Begrenzer für die Befehlsausgabe zu entfernen . schnelles Beispiel `for / f" tokens = * "% a in ('dir / s / b""') Echo"% ~ a "` Verwenden Sie den Befehl' REN 'entsprechend und suchen Sie nach "* for for" Variablensubstitutionen "*". Pimp Juice IT vor 6 Jahren 1
@slhck Tatsächlich wäre die erste Datei Beispiel A, die zweite - Beispiel B usw. Es gibt nie mehr Dateien als Buchstaben im Alphabet. Ich habe also rund 300 Ordner und es ist alptraumhaft, alles per Hand umzubenennen. Ich habe das eingebaute Windows-Massenumbenennen ausprobiert, aber es gibt ihnen Nummern + Kopie im Dateinamen, was für mich nicht funktioniert. Die meisten Ratschläge treffen für mich nicht zu, da ich ein Leerzeichen (und keinen Unterstrich_) zwischen "Probe" und dem Buchstaben benötige. Hilft das? Densetsu vor 6 Jahren 0
Ja, das macht es klarer. Bitte [bearbeiten] Sie Ihre Frage, um sie klarer zu machen. Andernfalls besteht die Gefahr, dass die Frage geschlossen wird. slhck vor 6 Jahren 0
Willkommen bei Super User! Bitte beachten Sie, dass https://superuser.com kein kostenloser Skript- / Code-Schreibservice ist. Wenn Sie uns sagen, was Sie bisher versucht haben (einschließlich der Skripts / des Codes, die Sie bereits verwenden) und wo Sie stecken bleiben, können wir versuchen, bei bestimmten Problemen zu helfen. Sie sollten auch lesen [Wie kann ich eine gute Frage stellen?] (Https://superuser.com/help/how-to-ask). DavidPostill vor 6 Jahren 0
(1) Ich habe Ihre Frage bearbeitet. Bitte überprüfen und korrigieren Sie alle Fehler, die ich gemacht habe. … (Fortsetzung) Scott vor 6 Jahren 0
(Fortsetzung)… (2) Sie sagen: “Ich habe einen Vorschlag aus folgenden Kommentaren verwendet, der funktioniert. Das einzige Problem ist, dass der Computer das Format der Dateien nicht erkennt. “(2a) Sie sollten *** sagen, was Sie versucht haben. Kopieren Sie das Skript in Ihre Frage (natürlich die Quellenangabe). (2b) Ich gehe davon aus, dass Sie über [die Antwort von harrymc] sprechen (https://superuser.com/q/1350663/150988#1350697). [robinCTS hat einen Kommentar gepostet vor einer Stunde] (https://superuser.com/q/1350663/150988#comment2026072_1350697), in dem erläutert wird, wie er darauf reagieren soll. Hast du es versucht? Was ist passiert? Scott vor 6 Jahren 1

2 Antworten auf die Frage

0
harrymc

Hier ist ein PowerShell-Skript, das das tut, was Sie fragen:

$letters = [char[]]([char]'A'..[char]'Z') $directoryName = $null $count = 0 Get-ChildItem -Path "your folder path" -File -Recurse |  ForEach-Object { if ($directoryName -eq $null -or $directoryName -ne $_.DirectoryName) { $directoryName = $_.DirectoryName $count = 0 } $newname = "Example " + $letters[$count++] + ".docx" Rename-Item $_.fullname $newname } 

Machen Sie zuerst eine Sicherung.

Vielen Dank! Ich habe das Skript ausgeführt, aber es ändert keinen der Namen. Der Name des Ordners lautet "AsReceived". Gibt es einen Teil des von Ihnen freigegebenen Skripts, an dem ich einen bestimmten Ordner / Pfad ändern muss? Densetsu vor 6 Jahren 0
Ja, der Teil, der schlau als "Ihr Ordnerpfad" `versteckt ist. harrymc vor 6 Jahren 0
Erstaunlich, jetzt funktioniert es wirklich. Nur letzte Frage: Die umzubenennenden Dateien liegen im Word-Format vor. Nach dem Umbenennen erkennt das System sie jedoch nicht mehr als solche. Abhilfe dafür? Densetsu vor 6 Jahren 0
@Densetsu Sie müssen die Erweiterung `.doc` hinzufügen, dh` $ newname = "Example" + $ letters [$ count ++] + ".doc" `. robinCTS vor 6 Jahren 0
Richtig. Sind alle Dateien `.doc` oder` .docx`? Oder können beide Typen gemischt werden? harrymc vor 6 Jahren 0
Wenn sie alle vom selben Typ sind, ändern Sie einfach das Skript wie oben. Ansonsten muss das Skript etwas verbessert werden. harrymc vor 6 Jahren 0
Die Dateien sind docx, ich hatte das ausprobiert, aber ich hatte nicht gedacht, die Anführungszeichen zu setzen. DANKE DIR! Es funktioniert jetzt perfekt und Sie haben mir stundenlange Arbeit erspart. Ich wünschte, es würde jemanden geben, der den Nicht-Techies solche Tricks beibringt. Und dank der freundlichen Seele, die meinen ursprünglichen Beitrag editiert hat, macht es jetzt wirklich mehr Sinn. Densetsu vor 6 Jahren 0
Ich habe Ihren Beitrag und meine Antwort im Hinblick auf unsere Diskussion bearbeitet. Wenn Sie möchten, können Sie eine riesige Menge an Informationen finden, indem Sie beispielsweise nach "PowerShell-Lernprogramm" suchen. harrymc vor 6 Jahren 0
-1
BruceJo

Ich stimme zu, dass dies immer noch eine schlecht formulierte Frage ist. Ich gehe davon aus, dass Sie Dateien haben: A,B,Cund Sie möchten sie umbenennen Example A Example B Example C

Ich habe ausgezeichnete Ergebnisse mit The Rename Program