PowerShell: Wie füge ich ein Präfix an alle Dateien in einem Verzeichnis an?

9354
Giffyguy

Derzeit verwende ich Cmdlets wie:

dir | rename-item -NewName {$_.name -replace "-","_"} 

Nun muss ich jedoch für alle Dateien im Verzeichnis ein Präfix zum Dateinamen hinzufügen.
Ich kann nicht vorhersagen, wie lang jeder Dateiname ist (er variiert), daher kann ich nicht einfach eine Reihe von .Platzhaltern verwenden.

Ich brauche es, um einen festen Satz an den Anfang jedes Dateinamens anzufügen, unabhängig davon, was dieser Dateiname ist.

1
Lösung finden Sie hier http://stackoverflow.com/a/20874916/5518385 Yisroel Tech vor 6 Jahren 1
Was ist es jetzt Ein Präfix oder ein Suffix? Für ein Präfix haben Sie bereits einen Namen, so dass Sie (wörtlich) einfach Ihr Präfix hinzufügen oder (für ein Suffix) das Suffix hinzufügen. Seth vor 6 Jahren 1

2 Antworten auf die Frage

5
Seth

Ein alternativer Ansatz für einen regulären Ausdruck wäre die Verwendung von einfachen Zeichenfolgenoperationen zum Erstellen des neuen Dateinamens.

Get-ChildItem | Rename-Item -NewName { "Prefix_" + $_.Name } 
Ich versuche das, aber es scheint verrückt zu werden und versucht immer wieder, Dateinamen mit einem Präfix zu versehen, bis der Dateiname zu lange abstürzt. Wenn Sie beispielsweise den Befehl oben ausführen, werden Dateinamen wie `Prefix_Prefix_Prefix_Prefix_Prefix_Prefix_Prefix_Prefix_Prefix _...` angezeigt Tom Carpenter vor 6 Jahren 0
Den Befehl teilen. `$ items = Get-ChildItem;` Und ersetzen Sie `Get-ChildItem` im obigen Fall durch` $ items`. Seth vor 6 Jahren 0
Am Ende, basierend auf [this] (https://stackoverflow.com/a/37279979/1557472), habe ich `` -Exclude Prefix_ * `` `zum` Get-ChildItem`-Befehl hinzugefügt. Tom Carpenter vor 6 Jahren 1
2
LotPings

Du bist ganz in der Nähe.

  • -replace verwendet RegEX und in einem regulären Ausdruck, den Sie am Anfang mit einem Anker verankern ^

Get-ChildItem -File | Rename-Item -NewName {$_.Name -replace "^","Prefix_"} 
Diese Antwort gefällt mir, weil sie keine Endlosschleife verursacht und ich das Präfix nicht zweimal schreiben muss - wie bei anderen Lösungen mit dem `-Exclude Prefix_ *`, um die Schleife zu vermeiden. TCB13 vor 5 Jahren 0