Cómo cambiar el nombre de algunos archivos según su marca de tiempo


1

supongamos que tengo 10 archivos generados por el sistema todos los días en D: \ Temp. Los nombres son ALEATORIOS cuando se generan.

Supongamos que necesito cambiar el nombre del más antiguo para que sea 'aaa', el segundo más antiguo para que sea 'bbb' ... luego 'ccc' ... 'ddd'.

¿Alguien puede ayudar a escribir script por lotes? El cmdlt de Powershell también será bueno.

¡Gracias!


Cuando dices 'aaa', 'bbb', 'ccc', etc., ¿lo dices literalmente?
EBGreen

Respuestas:


2

Aquí hay una solución usando una lista de nombres:

$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++
}

¡¡¡Gracias !!!!!!! Es útil para alguien como yo que casi no sabe nada acerca de los scripts de Powershell / Batch
ella

0

Importaría cómo quieres nombrarlos. Usar algo como 1,2,3,4 es lo más fácil. Debería declarar la variable para el nombre y un incrementador. Aunque eso es relativamente fácil y directo. Para encontrar el orden de creación:

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

Ese sería el trabajo de it para encontrar y renombrar.


¡Muchas gracias! Les cambiaría el nombre a algunas cadenas que ya están configuradas, declararé la variable para ellas :)
ella
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.