Eu tenho tentado escrever um script PowerShell (meu primeiro) para
- analisa apenas as pastas dentro de um diretório
- selecione apenas as pastas que correspondem a uma convenção de nomenclatura específica ('SEASON YEAR')
- alterna a ordem dos elementos do nome ('YEAR SEASON')
Eu eventualmente usei o programa BulkRenameUtility para fazer isso usando o regexp ^ (\ w +) (\ d +) e alterando a ordem do token para $ 2 $ 1 - no entanto, eu ainda estou aprendendo o Powershell e gostaria de poder fazer isso sem usar um programa externo.
Então, para reiterar, em C: \ Users \ Test
existem pastas e arquivos. Algumas das pastas são nomeadas Spring 2015
, Fall 2014
, por exemplo. No entanto, outras pastas têm nomes como geogex
. Os arquivos têm nomes como ENG1A SPRING 2015.odt
e untitled_0.odt
.
Como faço para alterar apenas os nomes das pastas nomeadas como "Primavera de 2015" para "Primavera 2015", "Queda 2014" etc.?
Eu consegui usar
gci | ? {$_.PSIsContainer} | select-string -pattern '\d+'
para realizar 1 e 2, mas estou preso ao usar isso para fazer a parte 3: realmente renomeie invertendo os elementos do nome. Eu tentei colocar o acima dentro de uma variável e assim:
gci | ? {$_.PSIsContainer} | select-string -pattern '\d+' | %{$data = $_.line; Write-Output "$data"};
no entanto, enquanto o acima mostra exatamente as pastas que eu quero, a matriz $ data parece conter apenas a última linha de saída. Tal que:
gci | ? {$_.PSIsContainer} | select-string -pattern '\d+' | %{$data = $_.line; Write-Output "$data"};
$data
produzirá:
test 123
test 321
test 321
Não tenho certeza se essa é mesmo a direção válida para começar.
Qualquer ajuda seria muito apreciada.