Como renomear alguns arquivos de acordo com seu timestamp

1

Suponha que eu tenha 10 arquivos gerados pelo sistema todos os dias em D: \ Temp. Os nomes são ALEATÓRIOS quando gerados.

Suponha que eu precise renomear o mais antigo para ser 'aaa', o segundo mais antigo a ser 'bbb' ... então 'ccc' ... 'ddd'.

alguém pode ajudar a escrever scripts em lote? Powershell cmdlt também será bom.

Obrigado!

    
por ella 15.05.2013 / 16:53

2 respostas

2

Aqui está uma solução usando uma lista de nomes:

$names = @('one.txt', 'two.txt', 'three.txt', 'four.txt', 'five.txt', 'six.txt', 'seven.txt', 'eight.txt', 'nine.txt', 'ten.txt')
$count = 0
foreach($file in (Get-ChildItem i:\temp | Sort-Object LastWriteTime | Select-Object -First 10)){
    Rename-Item $file.FullName (Join-Path $file.DirectoryName $names[$count])
    $count++
}
    
por 15.05.2013 / 17:16
0

Importa como você deseja nomeá-los. Usar algo como 1,2,3,4 é mais fácil. Você precisaria declarar a variável para o nome e um incrementador. Embora isso seja relativamente fácil e direto. Para encontrar a ordem de criação:

Get-ChildItem h:\CallCList | Sort-Object CreationTime |'
    ForEach-Object {
    Rename-Item $_.Name -NewName $NameToUse
    }

Esse seria o trabalho dele para encontrar e renomear.

    
por 15.05.2013 / 17:10