Kod för att beställa filnamn ska passa (2 / 4 steg)
Steg 2: Använda Powershell till Pad filer
Jag ville skapa en lösning som kan användas med en pre-installerat skript för en plattform
På Windows var det val jag gjort PowerShell. Denna skriptspråk byggt på .NET framework levereras på de senaste versionerna av Windows och är även tillgänglig för data överför för XP. Dessutom ger ramen en lång lista av funktioner som topp min nyfikenhet. De flesta av dessa funktioner faller under kategorin - "som gjorde saker mycket enklare" - men är utanför räckvidden för denna diskussion. På det hela, hittade jag språket lätt att plocka upp med en kombination av försök och misstag med några språk hänvisning guider och internet söker efter syntaxexempel. Sökningar skulle inte bara hjälpa mig få svar på omedelbara problemen, men ge mig idéer för andra lösningar. Dokumentation inbjuden upptäckten, och var lätt tillgängliga i Kommandotolken. Dessutom finns en ide (powershell_ide) med utan att behöva göra någon ytterligare installationer. Det enda jag behövde göra var aktiverar min skript körs. De två bilderna visar kommandot jag sprang som administratör så att mitt skript körs och ide som snabbt kan nås genom att klicka på en fil med filnamnstillägget ps1 och välja Redigera.
Lösningen är anpassad till indatafilerna namnstruktur. Olika namnkonventioner kan kräva vissa mindre förändringar till att skript processen. (mer om detta senare)
Förutsättningar:
- Fil sekvensen kommer att delas in i sin egen katalog.
- Filerna måste namnkonventionen för sekvens-# .extension, ger dem möjlighet att senare kombineras med andra sekvenser.
- exempel: Föreläsning-1.mp3 lecture13.mp3 föreläsning-5.mp3
- exempel: ece453_lecture-1.mp3 ece453_lecture-1.mp3
- exempel - inte: ece453-föreläsning-1.mp3
Processen:
- iterera genom alla filnamn i en katalog
- bryta ner filnamn
- hitta det maximala antalet siffror i den numrerade delen av sekvensen
- iterera genom alla filnamn i en katalog
- bryta ner filnamn (återanvändning om lagras)
- bygga om filnamnet med max antal siffror som konstaterats ovan
- flytta filen till nytt namn (testa produktionen innan den verkställer / kopiera istället för flytta)
# Noll stoppning fil nummer < br > $dir = "c:\dev\data"
$items = get-ChildItem-sökväg $dir
# skapa nya filnamn & flytta
foreach ($item i $items)
{
# om objektet är en katalog, sedan bearbeta den.
om ($item. Attribut - ne "Katalogen")
{
# Skriv-värd $item. Namn
$fs1 = $item. Name.Split(".")
$fs2 = $fs1[0].split("-")
$siz = $fs2 [1] | Åtgärd-objekt-tecknet | Markera - expandproperty tecken
om ($siz - gt $places)
{
$places = $siz
# Skriv-Host "platser är" $places
}
#$num = $fs2[1].toString("000")
#Write-värd $num
}
}
foreach ($item i $items)
{
# om objektet är en katalog, sedan bearbeta den.
om ($item. Attribut - ne "Katalogen")
{
# Skriv-värd $item. Namn
$fs1 = $item. Name.Split(".")
$fs2 = $fs1[0].split("-")
#$siz = $fs2 [1] | Åtgärd-objekt-tecknet | Markera - expandproperty tecken
$fmt = ' {0:D' + $places + "}"
$newnum = $fmt -f $fs2 [1]
$newnum = $fs2[1].toString(). PadLeft ($siz + 1, "0")
$newnam = $fs2 [0] + "-" + $newnum + "." + $fs1 [1]
# Skriv-värd $newnam
$item | Byt namn-item - NewName $newnam
}
}
Namn struktur gör att jag kan dra olika delar av namnet och få på numret. Jag kontrollera om talet innehåller fler siffror än tidigare kontrollerade nummer. Så, uppdatera jag nummer till check för efterföljande iterationer. Jag har kollat alla filer, kan jag använda vad jag har hittat att rekonstruera numret och flytta filen till önskat namn.