PowerShell: sublinhado de renomeação de arquivo em lote para hífen

0

É possível usar o PowerShell (Windows 7) para segmentar um delimitador específico dentro de um nome de arquivo e alterar esse delimitador de sublinhados para hifens / traços?

Por exemplo:

1942.009.405_SIENESE 16TH CENTURY__1988_09_08_DATA REPORT_TX_4305010_0002.pdf

para

1942.009.405_SIENESE 16TH CENTURY__1988-09-08_DATA REPORT_TX_4305010_0002.pdf

Se a data no nome do arquivo estiver faltando ou se uma parte da data estiver faltando, algum prompt de comando seria capaz de lidar com essa anomalia?

    
por MeShell 21.06.2018 / 20:13

1 resposta

1

Você pode usar uma substituição de expressão regular:

$test = '1942.009.405_SIENESE 16TH CENTURY__1988_09_08_DATA REPORT_TX_4305010_0002.pdf'
$test -replace '^(.+\d{4})_(\d{2})_(\d{2}.+)$', '$1-$2-$3'

Isto encontra todos os caracteres até um número de quatro dígitos, depois o sublinhado, depois um número de dois dígitos, depois outro sublinhado, depois um número de dois dígitos e o resto dos caracteres. Em seguida, ele substitui tudo com o primeiro bit que encontrou $1 = (.+\d{4}) um traço o segundo bit $2 = (\d{2}) outro traço e depois todo o resto $3 = (\d{2}.+)

    
por 21.06.2018 / 20:22