Paso 2: Usando Powershell para archivos Pad
Quería crear una solución que podría ser utilizada con un script preinstalado para una plataforma
En Windows, la elección que hice fue PowerShell. Este lenguaje de scripting construido sobre .NET framework viene configurado en las versiones más recientes de Windows y está aún disponible para su descarga para XP. Además, el marco ofrece una larga lista de características que pico mi curiosidad. La mayoría de esas características entra en la categoría de "hecho cosas mucho más simples" - pero está fuera del alcance de esta discusión. En general, he encontrado la lengua fácil recoger utilizando una combinación de prueba y error con algunas guías de referencia de la lengua y búsquedas en internet para ver ejemplos de sintaxis. Búsquedas no sólo me ayudaría encontrar respuestas a problemas inmediatos, pero me dan ideas para otras soluciones. Documentación invitó a descubrimiento y era fácilmente disponible en el símbolo del sistema. Además, un ide (powershell_ide) está disponible sin necesidad de hacer ninguna instalación adicional. Lo único que tenía que hacer era activar mis scripts ejecutar. Las dos imágenes ilustran los comandos que ejecuté como administrador, permitiendo que mis scripts a ejecutar y el ide que se puede acceder rápidamente por el contexto, haga clic en un archivo con extensión ps1 y seleccionando Editar.
La solución es modificado para requisitos particulares para los ficheros de entrada estructura de nombres. Convenciones de nomenclatura diferentes podrían requerir alguna alteración leve en el proceso de escritura. (más sobre esto más adelante)
Las condiciones previas:
- La secuencia de archivo se separará en su propio directorio.
- Los archivos tendrán la Convención de nomenclatura de secuencia - .extension #, lo que les permite luego combinarse con otras secuencias.
- ejemplos: Conferencia-1.mp3 lecture13.mp3 conferencia-5.MP3/WMA/AMV
- ejemplos: ece453_lecture ece453_lecture-1.mp3-1.mp3
- ejemplo - no: ece453-Conferencia-1.mp3
El proceso:
- recorrer en iteración todos los nombres de archivo en un directorio
- acabar con los nombres de archivo
- encontrar el número máximo de dígitos en la parte numerada de la secuencia
- recorrer en iteración todos los nombres de archivo en un directorio
- acabar con los nombres de archivo (reutilización si almacenado)
- reconstruir el nombre del archivo con el número máximo de dígitos que se encuentra por encima de
- mover el archivo al nuevo nombre (salida de prueba antes de ejecutar / copiar en lugar de mover)
# Zero padding file Numbers<br>$dir = "c:\dev\data" $items = Get-ChildItem -Path $dir # create new file names & move foreach ($item in $items) { # if the item is a directory, then process it. if ($item.Attributes -ne "Directory") { # Write-Host $item.Name $fs1 = $item.Name.split(".") $fs2 = $fs1[0].split("-") $siz = $fs2[1] | Measure-Object -Character | select -expandproperty characters if ( $siz -gt $places) { $places = $siz # Write-Host "places is " $places } #$num = $fs2[1].toString("000") #Write-Host $num } } foreach ($item in $items) { # if the item is a directory, then process it. if ($item.Attributes -ne "Directory") { # Write-Host $item.Name $fs1 = $item.Name.split(".") $fs2 = $fs1[0].split("-") #$siz = $fs2[1] | Measure-Object -Character | select -expandproperty characters $fmt = '{0:D' + $places + '}' $newnum = $fmt -f $fs2[1] $newnum = $fs2[1].toString().PadLeft($siz+1, "0") $newnam = $fs2[0] + "-" + $newnum + "." + $fs1[1] # Write-Host $newnam $item | rename-item -NewName $newnam } }
La estructura de nombre me permite despegue las diferentes partes del nombre del archivo y en el número. Comprobar para ver si el número tiene más dígitos que previamente facturado cifras. Si es así, actualizar el número para comprobar para iteraciones posteriores. Una vez que he comprobado todos los archivos, puedo usar lo que he encontrado para reconstruir el número y mover el archivo al nombre deseado.