Como lote renomear parte do nome do arquivo no Windows PowerShell usando Regex?
Neste exemplo, temos 6 arquivos abaixo com a data eo nome do arquivo abaixo:
Modo LastWriteTime comprimento do nome ---- ------------- ------ ---- -uma---- 10/06/2018 12:40 0 1 = 9.8.16 Declaração 298.67.pdf banco -uma---- 10/06/2018 12:40 0 2 = 9.9.16 Declaração 134.74.pdf banco -uma---- 10/06/2018 12:41 0 3 = 9.10.16 Declaração 123.43.pdf banco -uma---- 10/06/2018 12:41 0 4 = 9.11.16 Declaração 134.54.pdf banco -uma---- 10/06/2018 12:41 0 5 = 9.12.16 Declaração 157.98.pdf banco -uma---- 10/06/2018 12:41 0 6 = 9.1.17 Declaração 123.45.pdf banco
Aqui, o nome do ficheiro contém uma série # no inicio, seguido por =, seguido por ‘extrato bancário’ seguido até o final de equilíbrio declaração.
Esses arquivos estão em declarações de cartão de crédito fato e a palavra ‘Banco’ precisa ser substituída pela expressão ‘Cartão de Crédito’. Todo o resto do nome do arquivo deve permanecer o mesmo.
Para atingir este, vamos estar usando o Windows PowerShell com Regex.
Para listar todos os extratos bancários, nós usamos o ls comando, em seguida, o tubo de saída
ls | -newname ren {$_.name -replace('(.+)Banco(.+)','$1Credit Card$2')}
O comando de mudança de nome é usado após o tubo para renomear os arquivos. $_ é o objeto que contém a saída antes do tubo, e nós estamos usando a propriedade nome do $_ objeto. -replace é utilizado em cordas em PowerShell, que substitui uma string com uma nova seqüência. -replace é uma função que leva 2 parâmetros. O 1º parâmetro é a antiga cadeia que queremos substituir eo 2º parâmetro é a nova cadeia.
grupos na Regex capturar permite-nos manter partes da cadeia. em Regex, nada de colocar entre parênteses é capturado para usar mais tarde. eg. (.+)Bank(.+) captura qualquer coisa antes e depois dos caracteres ‘Banco’. Podemos usar estas peças capturadas, usando $ e um número. O 1º parêntese captura em $1 ea 2ª parêntese captura em $2 etc…
No 1º parâmetro, especificamos a antiga cadeia que queremos substituir, e, ao mesmo tempo, captar as partes da cadeia que deseja manter (capturar). No 2º parâmetro, a nova string usa as peças capturadas que deseja manter, bem como a nova seqüência em si, por exemplo. '$1Credit Card$2'.
Resultado:
Modo LastWrite Tempo Comprimento Nome ---- --------- ---- ------ ---- -uma---- 10/06/2018 12:40 0 1 = 9.8.16 Cartão de Crédito 298.67.pdf Declaração -uma---- 10/06/2018 12:40 0 2 = 9.9.16 Cartão de Crédito 134.74.pdf Declaração -uma---- 10/06/2018 12:41 0 3 = 9.10.16 Cartão de Crédito Declaração 123.43.pdf -a ---- 10/06/2018 12:41 0 4 = 9.11.16 Cartão de Crédito Declaração 134.54.pdf -a ---- 10/06/2018 12:41 0 5 = 9.12.16 Cartão de Crédito Declaração 157.98.pdf -a ---- 10/06/2018 12:41 0 6 = 9.1.17 Cartão de Crédito 123.45.pdf Declaração
