Ich habe versucht, ein Powershell-Skript (mein erstes) zu schreiben
- Analysieren Sie nur die Ordner in einem Verzeichnis
- Wählen Sie nur die Ordner aus, die einer bestimmten Namenskonvention entsprechen ("JAHRESZEIT").
- ändere die Reihenfolge der Elemente des Namens ('JAHRESZEIT')
Ich habe schließlich das Programm BulkRenameUtility verwendet, um dies mit dem regulären Ausdruck ^ (\ w +) (\ d +) zu tun und die Token-Reihenfolge auf $ 2 $ 1 zu ändern. Ich lerne jedoch immer noch Powershell und möchte dies auch ohne ein tun können externes Programm.
Um es noch einmal zu wiederholen, gehen Sie zu C: \ Users \ Test
gibt es Ordner und Dateien .. sind einige der Ordner mit den Namen Spring 2015
, Fall 2014
zum Beispiel. Andere Ordner haben jedoch Namen wie geogex
. Dateien haben Namen wie ENG1A SPRING 2015.odt
und untitled_0.odt
.
Wie ändere ich nur die Namen der Ordner mit dem Namen "Frühling 2015" in "Frühling 2015", "Herbst 2014" usw.?
Ich konnte verwenden
gci | ? {$_.PSIsContainer} | select-string -pattern '\d+'
Um 1 und 2 zu erreichen, bleibe ich aber dabei, Teil 3 zu machen: Benenne tatsächlich um, indem du die Elemente des Namens umkehrst. Ich habe versucht, das Obige in eine Variable zu setzen, und zwar wie folgt:
gci | ? {$_.PSIsContainer} | select-string -pattern '\d+' | %{$data = $_.line; Write-Output "$data"};
Während die obigen Ausgaben genau die Ordner sind, die ich möchte, scheint das Array $ data nur die letzte Ausgabezeile zu enthalten. So dass:
gci | ? {$_.PSIsContainer} | select-string -pattern '\d+' | %{$data = $_.line; Write-Output "$data"};
$data
wird ausgeben:
test 123
test 321
test 321
Ich bin mir nicht sicher, ob dies überhaupt eine gültige Richtung ist.
Jede Hilfe wäre sehr dankbar.
quelle