Só para mostrar uma expressão regular adequada é muito bem capaz de obtendo não apenas o nome, mas todos os elementos contidos no nome do arquivo. usando grupos de captura colocando as partes entre parênteses
** EDIT consulte o RegEX ao vivo no link **
## Q:\Test18\SU_1330038.ps1
$TRANSFER = 'C:\Users\BRACEGIRDLE\Favorites\Desktop\TRANSFER\'
$TVSHOWS = 'C:\Users\BRACEGIRDLE\Favorites\Desktop\TV_SHOW\'
$Pattern = '(.*)\s+S(\d{2})E(\d{2})[\- ]+(.*)'
Get-ChildItem $TVSHOWS *.txt| Where-Object BaseName -match $Pattern |
ForEach-Object{
$jon = Join-Path $TVSHOWS $Matches[1]
If( -not (Test-Path $jon)) {
New-Item -ItemType Directory -Force -Path $jon |Out-Null
}
$_ | Copy-Item -Destination $jon
[pscustomobject]@{
Name = $Matches[1]
Series = $Matches[2]
Episode= $Matches[3]
Title = $Matches[4]
}
}
O script faz a criação da subdiretória, a cópia e também mostra esta saída:
Name Series Episode Title
---- ------ ------- -----
12 Monkeys 02 10 Fatherland
Colony 02 01 Eleven Thirteen
Prison Break 05 05 Contingency
Árvore de exemplo no meu Ramdrive a:
> tree A: /F
A:\
│ 12 Monkeys S02E10 - Fatherland.txt
│ Colony S02E01 - Eleven Thirteen.txt
│ Prison Break S05E05 - Contingency.txt
│
├───12 Monkeys
│ 12 Monkeys S02E10 - Fatherland.txt
│
├───Colony
│ Colony S02E01 - Eleven Thirteen.txt
│
└───Prison Break
Prison Break S05E05 - Contingency.txt