Přejít k obsahu webu
28.1.2022 / kaldy123

Hromadná změna názvů pomocí Powershell

Batch File Rename in PowerShell

Domnívám se, že s problémem „hromadného přejmenování souborů“ se setkal každý, kdo pracuje s fotografiemi. Těch důvodů může být 25, ale mne dostal nakonec způsob, jakým některé OS (Windows) řeší doplicitní soubory – prostě na konec jména připojí index v kulatých závorkách, takže vznikne název tvaru ‚soubor (1).jpg‘ – uvádím schválně s jednoduchými apostrofy, aby vynikla ta mezera v názvu.

Do problému se dostanete, pokud chcete vyexportovat 128 takových fotek na webový server, který takovéto názvy statečně ignoruje, nebo je považuje za vyslovenou chybu (jiný File System – např. Linux…)

Upravit 10 fotek je otrava, ale při větších počtech to bývá vražedné…

Standardní příklad uvádí dávkové přejmenování s pomocí metody Replace:

Povzbuzeni úspěchem zkusme něco složitějšího:

Takže se již cítíme docela festovně v kramclecích a zkusíme:

Ouups! Ale chyba „parameterBindingException“ nás navede: ten bordel dělá ta závorka, která se interpretuje jako speciální znak. Takže musíme říci „Powershelle, ta levá závorka není speciální znak ani oddělovač!“ :

Trefa! Takže ještě tu pravou:

No a na závěr něco-něco:

Zaprvé se mi nepodařilo do příkazu Rename-Item zabudovat podmíněný příkaz. To jsem obešel přes filtr ‚?‘ – Where-Object.

Zadruhé jsem nechtěl pouhý ‚replace‘, ale skutečně snížit letopočet o jedničku… Ve výrazu
(-1 + $_.Name.Substring(5,4)) je dúležité uvedení -1 na začátku: výraz se vyhodnocuje jako číslo a dochází ke konverzi řetězce $_.Name.Substring(5,4) na numerickou hodnotu. Po provedení výpočtu se celý výraz přidává k začátku textového řetězce a tedy dojde k jeho konverzi z čísla na znakový řetězec….

Samozřejmě tímto způsobem lze pokračovat dále. Pokud se domníváte, že máte nějaký přínosný podnět do diskuse, připojte svůj komentář k příspěvku!

Další příklad:

PS 
C:\Users\sura> Get-ChildItem videos|? {$_.Name -like 'Šó*'}|Rename-Item -NewName {$_.Name.Substring(0,8) + '.mp4'} -Verbose
VERBOSE: Performing the operation "Rename File" on target "Item: C:\Users\sura\videos\Šógun 01-Shogun 01 (1980) Tvrip Cz-1.m4v Destination: C:\Users\sura\videos\Šógun 01.mp4".
VERBOSE: Performing the operation "Rename File" on target "Item: C:\Users\sura\videos\Šógun 02-Shogun 02 (1980) Tvrip Cz-2.m4v Destination: C:\Users\sura\videos\Šógun 02.mp4".
VERBOSE: Performing the operation "Rename File" on target "Item: C:\Users\sura\videos\Šógun 03-Shogun 03 (1980) Tvrip Cz-3.m4v Destination: C:\Users\sura\videos\Šógun 03.mp4".
VERBOSE: Performing the operation "Rename File" on target "Item: C:\Users\sura\videos\Šógun 04-Shogun 04 (1980) Tvrip Cz-4.m4v Destination: C:\Users\sura\videos\Šógun 04.mp4".
VERBOSE: Performing the operation "Rename File" on target "Item: C:\Users\sura\videos\Šógun 05-Shogun 05 (1980) Tvrip Cz-5.m4v Destination: C:\Users\sura\videos\Šógun 05.mp4".
VERBOSE: Performing the operation "Rename File" on target "Item: C:\Users\sura\videos\Šógun 06-Shogun 06 (1980) Tvrip Cz-6.m4v Destination: C:\Users\sura\videos\Šógun 06.mp4".
VERBOSE: Performing the operation "Rename File" on target "Item: C:\Users\sura\videos\Šógun 07-Shogun 07 (1980) Tvrip Cz-7.m4v Destination: C:\Users\sura\videos\Šógun 07.mp4".
VERBOSE: Performing the operation "Rename File" on target "Item: C:\Users\sura\videos\Šógun 08-Shogun 08 (1980) Tvrip Cz-8.m4v Destination: C:\Users\sura\videos\Šógun 08.mp4".
VERBOSE: Performing the operation "Rename File" on target "Item: C:\Users\sura\videos\Šógun 09-Shogun 09 (1980) Tvrip Cz-9.m4v Destination: C:\Users\sura\videos\Šógun 09.mp4".
VERBOSE: Performing the operation "Rename File" on target "Item: C:\Users\sura\videos\Šógun 1 0-Shogun 10 (1980) Tvrip Cz-10.m4v Destination: C:\Users\sura\videos\Šógun 10.mp4".
PS C:\Users\admin> 

Zanechat odpověď

Vyplňte detaily níže nebo klikněte na ikonu pro přihlášení:

Logo WordPress.com

Komentujete pomocí vašeho WordPress.com účtu. Odhlásit /  Změnit )

Twitter picture

Komentujete pomocí vašeho Twitter účtu. Odhlásit /  Změnit )

Facebook photo

Komentujete pomocí vašeho Facebook účtu. Odhlásit /  Změnit )

Připojování k %s

%d blogerům se to líbí: