Faz loop pelos arquivos e remove parte do nome do arquivo

1

Eu preciso remover os primeiros 3 caracteres de cada arquivo no meu diretório. Aqui está o meu código:

Get-ChildItem "D:\New Folder" -Filter *.txt |
foreach-object -process {rename-item -path $_.FullName -newname ($_.Remove(0,3))}

Eu não entendo porque isso não está funcionando. Alguém pode me ajudar?

    
por Cobold 09.12.2014 / 17:48

1 resposta

5

$ _ refere-se ao objeto de arquivo. Não para o nome do arquivo. Eu suspeito que isso apenas escorregou na sua mente, uma vez que você se refere a $ _. Fullname para o -Path. Tente referenciar o nome em vez do objeto quando você renomeá-lo:

Get-ChildItem "D:\New Folder" -Filter *.txt |
foreach-object -process {rename-item -path $_.FullName -newname ($_.Name.Remove(0,3))}
    
por 09.12.2014 / 17:59

Tags