Stap 2: Gebruikt u Powershell naar Pad bestanden
Mij wilden voor wekken een oplossing die kan worden gebruikt met een vooraf geïnstalleerde scripts voor een platform
De keuze die ik gemaakt was in Windows PowerShell. Deze scripttaal die is gebouwd op de top van het .NET framework geconfigureerde komt op de meest recente versies van Windows en is zelfs beschikbaar als download voor XP. Daarnaast biedt het kader een lange waslijst van functies die piek mijn nieuwsgierigheid. De meeste van deze functies vallen onder de categorie van - "die dingen een stuk eenvoudiger gemaakt" - maar vallen buiten het toepassingsgebied van deze discussie. Over het geheel genomen, vond ik de taal makkelijk te halen met behulp van een combinatie van trial and error met enkele taal referentie gidsen en zoekacties op internet voor syntaxisvoorbeelden. Zoekopdrachten zou niet alleen helpen met mij antwoorden vinden op de acute problemen, maar geef me ideeën voor andere oplossingen. Documentatie uitgenodigd van ontdekking, en was gemakkelijk beschikbaar bij de opdrachtprompt. Bovendien is een ide (powershell_ide) is beschikbaar zonder dat hoeft te doen van eventuele aanvullende installaties. Het enige wat dat ik moest doen was mijn scripts uitvoeren inschakelen. De twee afbeeldingen illustreren de opdracht die ik liep als beheerder zodat mijn scripts moeten worden uitgevoerd, en de ide die snel kan worden benaderd door context te klikken op een bestand met de extensie van een ps1 en bewerken te selecteren.
De oplossing is om de inputdossiers naamgevingsstructuur aangepast. Verschillende Naamgevingsconventies wellicht sommige lichte wijziging aan het script-proces. (meer hierover later)
De voorwaarden:
- De volgorde van het bestand zal worden gescheiden in hun eigen directory.
- De bestanden zal hebben de naamgevingsconventie van sequentie-# .extension, waardoor ze later worden gecombineerd met andere reeksen.
- voorbeelden: hoorcollege-1.mp3 lecture13.mp3 Hoorcollege-5.mp3
- voorbeelden: ece453_lecture-1.mp3 ece453_lecture-1.mp3
- voorbeeld - niet: ece453-Hoorcollege-1.mp3
Het proces:
- alle bestandsnamen in een map doorlopen
- breken van bestandsnamen
- het maximum aantal cijfers in de genummerde onderdeel van de sequentie zoeken
- alle bestandsnamen in een map doorlopen
- breken van bestandsnamen (hergebruik als opgeslagen)
- herbouwen van de bestandsnaam met het max aantal cijfers gevonden boven
- Verplaats het bestand naar de nieuwe naam (test uitgang voordat u / kopiëren in plaats van verplaatsen)
# 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 } }
De naam structuur kan ik schil terug de verschillende delen van de bestandsnaam en krijgen op het nummer. Ik controleer om te zien als het getal meer cijfers dan eerder geselecteerde nummers heeft. Als dat zo is, update ik het nummer om te controleren op latere iteraties. Zodra ik heb alle bestanden, die ik kan gebruiken wat ik heb gevonden om het nummer te reconstrueren en verplaats het bestand naar de gewenste naam.