Massen-Umbenennung von Dateien in der PowerShell mit sequentiellen numerischen Suffixe
Habe ich 14.000 Fotos sortiert, in Dateien nach Jahr und Monat, aber aufgenommen mit mehreren Kameras und ich möchte den Namen der Datei zu reflektieren, das Datum genommen. Zum Beispiel Oktober 16, 1998 Bilder sind in einem Ordner namens " 1998\10 Oktober\19981016.
Ich will das alle Bilder benannt werden 19981016_0001 19981016_0002 etc. Ich habe versucht, mehrere Vorschläge, aber es hat nicht funktioniert.
Kann ich zu dem Punkt, wo es listet die Ordner, die ich ändern möchte, aber ich bin nicht in der Lage, um tatsächlich ändern. Alle meine Bilder sind .jpg.
Versuche
Erstellt habe ich eine temp-Datei kopiert, falls ich es versaut. Ich begann durch Eingabe cd "C:\Documents and Settings\Brooke LastName\Desktop\Temp"
dann nach erfolgreich immer meine Datei zu laden habe ich eine Formel, die ich gefunden in diesem forum.
ls *jpg | Foreach {$i=1} {Rename-Item _ -NewName ("$($.19981016){0:00000000#} .jpg" -f $i++) -whatif}
Die Fehler, die ich sagte,
Unexpected token ' .19981016' in expression or statement.
At line:1 char:12 + $.19981016 <<<<
Den Fehler mehrmals wiederholt.
Ich habe mehrere Formeln, die auf dem web, aber die meisten Dateien erstellt, die würden die Nummer mit Klammern zum Beispiel Ferien (1).jpg. Ich möchte ein vier-stelliger Zähler, nach einem Unterstrich am Ende von meinem Termin, z.B. 19981016_0001
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die syntax ist Weg. Ein paar Fragen:
$($.19981016)
gedacht war, zu produzieren, aber $( ) wertet den Ausdruck in Klammern und fügt das Ergebnis in den string ein, und du bist immer der Fehler, weil$.19981016
ist kein Gültiger Ausdruck. Die Fehler würden wiederholt werden, für jede .jpg-Datei in das Verzeichnis.{0:00000000#}
in einen formatierten string erstellen Sie eine null-gepolsterte Zahl mit 9 Ziffern, aber einen kürzeren Weg zu tun, ist{0:D9}
. Aber ich dachte, Sie wollten den null-gepolsterte Nummer 4 Ziffern, so dass sollte{0:0000#}
oder{0:D4}
.Foreach {$i=1} { [...]
tun soll. Das Schlüsselwort foreach kann bedeuten, eine foreach Schleife, oder es kann ein Kürzel für Foreach-Object. In diesem Zusammenhang erhalten die Eingabe von einer pipeline, es wird immer das letztere, aber diese syntax ist falsch, so oder so.Dies zu tun, was Sie wollen, verstehe ich die Beschreibung richtig:
Den Dateinamen wird 19981016_0001.jpg, 19981016_0002.jpg, 19981016_0003.jpg, etc.
Ein paar Hinweise:
:)
ich hatte Schwierigkeiten versuchen zu finden, details über die Schleife über die Verzeichnis-Dateien auflisten und string Ersatz-Formatierung.19981016_0001.jpg, 19981016_0003.jpg, 19981016_0005.jpg,...
? es ist, weil ich habe ein gescanntes Dokument mit den ungeraden Seiten in einem Verzeichnis (und auch Seiten in anderen..bat ren
in meiner Hosentasche, aber es gab so viele detaillierte Schritte gemacht, dass die manuelle Prozess attraktiver. Diese Methode ist so viel einfacher und nützlicher. DankeForeach {$i=1} { [...]
: abgesehen von der fehlenden schließen}
die syntax korrekt ist : die ersten script-block bindet die-Begin
parameter und dient zur Initialisierung vor der Verarbeitung von pipeline-Eingabe beginnt.Dieser kommt nah an die original-Frage. Sie können tatsächlich an einem script-block-array mit der foreach-object -process, wie dokumentiert (kaum). Ich weiß nur das nach Bruce Payette ' s Buch. Der Ordner-name ist "19981016". Den Quell-Dateinamen dürfen nicht gehen in der Reihenfolge, die Sie erwarten.