Jak dávkové přejmenování část názvu souboru v prostředí Windows PowerShell pomocí Regex?
V tomto příkladu, my máme 6 Soubory s datem a název níže:
Režim LastWriteTime Délka Name ---- ------------- ------ ---- -A---- 10/06/2018 12:40 0 1 = 9.8.16 Prohlášení Bank 298.67.pdf -A---- 10/06/2018 12:40 0 2 = 9.9.16 Prohlášení Bank 134.74.pdf -A---- 10/06/2018 12:41 0 3 = 9.10.16 Prohlášení Bank 123.43.pdf -A---- 10/06/2018 12:41 0 4 = 9.11.16 Prohlášení Bank 134.54.pdf -A---- 10/06/2018 12:41 0 5 = 9.12.16 Prohlášení Bank 157.98.pdf -A---- 10/06/2018 12:41 0 6 = 9.1.17 Prohlášení Bank 123.45.pdf
Zde, název souboru obsahuje sériové # na začátku, následuje =, následuje ‚Prohlášení banky’ následoval do konce roku výkazech.
Tyto soubory jsou v závěrce skutečnost, kreditních karet a slovo ‚banka’ musí být nahrazena slovy ‚Kreditní karta‘. Celý zbytek souboru by měla zůstat stejná.
Za účelem dosažení tohoto cíle, budeme používat Windows PowerShell s Regex.
Vypsat všechny bankovní výpisy, používáme ls příkaz, pak trubka výstup
ls | ren -newname {$_.name VYMĚNIT('(.+)banka(.+)','$1Credit Card$2')}
Příkaz přejmenování je používán po trubce přejmenovat soubory. $_ je objekt, který obsahuje výstup před trubkou, a my jsme s použitím vlastnost název $_ objekt. -replace Používá se u řetězců v PowerShell, který nahradí řetězec novým řetězcem. -replace je funkce, která bere 2 parametry. 1. Parametr je starý řetězec, který chceme nahradit a druhý parametr je nový řetězec.
Zachycení skupiny v RegEx nám umožňuje udržet částí řetězce. v RegEx, něco dát v závorce je zachycen pro pozdější použití. např.. (.+)Bank(.+) zachytí něco před a po postav banka ". Můžeme použít tyto zachycené díly, používáním $ a řada. 1. závorky zachytí do $1 a druhá závorka zachytí do $2 atd…
V 1. parametru, určíme starý řetězec, který chceme nahradit, a zároveň jsme se zachytit ty části řetězce, které chceme zachovat (zajetí). Ve 2. parametru, Nový řetězec používá zachycené části, které chceme zachovat, stejně jako samotný nový řetězec např. '$1Credit Card$2'.
Výsledek:
Režim LastWrite Time Délka Name ---- --------- ---- ------ ---- -A---- 10/06/2018 12:40 0 1 = 9.8.16 Výpisu z platební karty 298.67.pdf -A---- 10/06/2018 12:40 0 2 = 9.9.16 Výpisu z platební karty 134.74.pdf -A---- 10/06/2018 12:41 0 3 = 9.10.16 Kreditní karta Prohlášení 123.43.pdf -a ---- 10/06/2018 12:41 0 4 = 9.11.16 Kreditní karta Prohlášení 134.54.pdf -a ---- 10/06/2018 12:41 0 5 = 9.12.16 Kreditní karta Prohlášení 157.98.pdf -a ---- 10/06/2018 12:41 0 6 = 9.1.17 Výpisu z platební karty 123.45.pdf
