1

suppose I have 10 files generated by the system every day under D:\Temp. The names are RANDOMLY when generated.

Assume I need to rename the oldest one to be 'aaa', the second oldest one to be 'bbb'..then 'ccc'...'ddd'.

can someone help to write batch script? Powershell cmdlt will be good as well.

Thanks!

1
  • When you say 'aaa', 'bbb', 'ccc', etc, do you mean that literally?
    – EBGreen
    May 15, 2013 at 15:06

2 Answers 2

2

Here is a solution using a list of names:

$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++
}
1
  • Thanks!!!!!!!It comes in handy for someone like me who almost know nothing about powershell / batch scripting
    – ella
    May 15, 2013 at 22:54
0

It would matter how you want to name them. Using something like 1,2,3,4 is easiest. You would need to declare the variable for the name and an incrementer. Although that is relatively easy and straight forward. For the finding the order of creation:

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

That would be the work of the it for finding and renaming.

1
  • Thanks a lot! I would rename them to some strings which are already set, I will declare the variable for them:)
    – ella
    May 15, 2013 at 22:52

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .