Renomeação em lote em um compartilhamento de arquivos

1

Atualmente, temos um compartilhamento CIFS hospedado em um dispositivo SAN e estamos planejando migrar para um sistema de gerenciamento de casos. O problema que estou tendo é que muitos dos vários arquivos em nosso compartilhamento de arquivos terminam com um ponto final (.) E não fazem o upload.

Eu tenho tentado fazer um script funcionar que manteria os nomes dos arquivos iguais, mas removerá quaisquer pontos à direita. Eu consegui fazer isso com vários personagens especiais usando o powershell.

Também temos muitas subpastas que têm um ponto (.) no meio do nome da pasta e precisariam deixá-las em paz.

Exemplo

Nome do arquivo original: 20151101 Luis K. Abrishamian M.D..pdf

Novo nome de arquivo: 20151101 Luis K. Abrishamian M.D.pdf

Eu usei este para remover todos os & dos nomes de arquivos

Get-ChildItem -recurse -name | ForEach-Object { Move-Item $_ $_.replace("&", "and") }

Eu tentei este, mas ele não conseguiu fazer o que eu precisava

Get-ChildItem -recurse -name | ForEach-Object { Move-Item $_ $_.replace("*.", "") }
    
por AimdSoldier 11.03.2016 / 17:51

4 respostas

0

Tente o seguinte:

Get-ChildItem -recurse -name |  ForEach-Object { If($_.Substring($_.Length-1) -eq ".") { Move-Item $_ $_.Substring(0,$_.Length-1) } }

Isto irá obter cada item, verificar se o último caractere é um . e, se for, moverá para o mesmo nome sem o último caractere.

    
por 11.03.2016 / 18:08
0

Você poderia tentar

Get-ChildItem -recurse -name | ForEach-Object { Move-Item $_  ([regex]::Replace($_, "\.$" , "")) }
    
por 11.03.2016 / 18:13
0

Veio de uma pessoa anônima em powershell.org

# Replace '..' from names (remove one dot)
Get-ChildItem -Recurse -Path .\my\path | Rename-Item -NewName {$_.name -replace '\.\.','.'} -WhatIf
    
por 11.03.2016 / 22:41
0

Não há uma única linha para mim.

foreach ($file in (Get-ChildItem 'C:\test' -Recurse) ){
  $newName = $file.DirectoryName + '\' + ( $file.Basename.replace('.', '').replace('&', 'and') ) + $file.Extension
  move-item $file.FullName $newName 
}
    
por 22.03.2016 / 14:25