Dies ist eine Frage zur Ausführung von Windows PowerShell auf einem Desktop-PC mit Windows Home 64-Bit.
Ich ändere etwa hundert Ordner mit Fotodateinamen von einem Kamera- und Scanner-ähnlichen 005_2.JPG
in einen ausführlichen Dateinamen wie Some Kid Riding a Bicycle
.
Ich verwende den Windows PowerShell-Befehl:
Dir | %{Rename-Item $_ -NewName ("Some Kid Riding a Bicycle-{0}.jpg" -f $nr++)}
Das läuft einwandfrei.
Wenn ich aber einfach mit CD\ zum nächsten Ordner gehe und dort den neuen Betreff durch eine neue Zeichenfolge ersetze, wird die an den Dateinamen angehängte Indexnummer nicht auf „1“ zurückgesetzt, sondern hochgezählt – nicht einmal bis zur nächsten Nummer, die dem Index der vorherigen Operation folgt (in diesem Fall 111).
Wenn der letzte Index im letzten Vorgang „111“ war, wie in diesem Beispiel:
-a---- 2/4/2020 8:02 PM 404601 Some Kid Riding a Bicycle-111.jpg
und dann wechsle ich per cd\ zu einem Ordner mit 8 Dateien:
Mode LastWriteTime Length Name
-a---- 1/16/2020 11:39 PM 598118 018_15.JPG
[6 lines omitted here]
-a---- 1/16/2020 11:39 PM 727598 DSC017.jpg
und Renn:
> Dir | %{Rename-Item $_ -NewName ("Some Old Guy Riding a Bicycle-{0}.jpg" -f $nr++)}
In diesem Ordner lautet der nächste Dateiname in der Ausgabesequenz:
-a---- 1/16/2020 11:39 PM 598118 Some Old Guy Riding a Bicycle-120.jpg
Es sieht so aus, als ob der Index um die Anzahl der Dateien im neuen Zielordner nach vorne gesprungen ist. Ich frage mich, ob diese letzten paar Zeichen -f $nr++
) damit zu tun haben, aber ich habe in meiner dürftigen Bibliothek keinen Verweis auf eine solche Zeichenfolge gefunden.
Wie behebe ich das, sodass es mit -1 (oder einem anderen voreingestellten Wert) neu beginnt?
Antwort1
$nr ist Ihre Variable und Sie iterieren ihren Wert mit jedem Befehl. Ihr Gültigkeitsbereich ist Ihre PWSH-Sitzung. Solange Ihre Sitzung geöffnet ist, steigt der Wert von $nr weiter an, es sei denn, Sie weisen einen neuen Wert zu, indem Sie die Anweisung „$nr = 1“ eingeben.