Jinsi ya kundi rename sehemu ya jina la faili katika Windows PowerShell kutumia Regex?

Katika mfano huu, tuna 6 files hapa chini pamoja na tarehe na jina la faili hapa chini:

Mode LastWriteTime Jina Urefu
----                -------------         ------ ----
-a ----       10/06/2018     12:40              0 1 = 9.8.16 Bank Statement 298.67.pdf
-a ----       10/06/2018     12:40              0 2 = 9.9.16 Bank Statement 134.74.pdf
-a ----       10/06/2018     12:41              0 3 = 9.10.16 Bank Statement 123.43.pdf
-a ----       10/06/2018     12:41              0 4 = 9.11.16 Bank Statement 134.54.pdf
-a ----       10/06/2018     12:41              0 5 = 9.12.16 Bank Statement 157.98.pdf
-a ----       10/06/2018     12:41              0 6 = 9.1.17 Bank Statement 123.45.pdf

Hapa, jina la faili lina mfululizo # mwanzoni, ikifuatiwa na =, ikifuatiwa na 'Bank Statement’ ikifuatiwa na mwisho wa usawa kauli.

Mafaili haya ni katika Kadi Kauli ukweli Mikopo na neno 'Bank’ inahitaji kubadilishwa kwa maneno 'Kadi ya mikopo'. Wengine wote wa jina la faili wanapaswa kubakia moja.

Ili kufanikisha hili, we will be using Madirisha PowerShell with Regex.

Kuorodhesha kauli yote ya benki, tunatumia ls amri, kisha bomba pato

ls | ren -newname {$_.name -replace('(.+)Benki(.+)','$ 1Credit Kadi $ 2')}

Kubadili jina ya amri ni kutumika baada ya mabomba kubadili jina files. $_ ni kitu ambayo ana pato kabla mabomba, na sisi ni kutumia jina la mali za $_ kitu. -replace is used on strings in PowerShell, ambayo inachukua nafasi ya kamba na kamba mpya. -replace ni kazi ambayo inachukua 2 vigezo. 1 parameter ni mtungo zamani ambayo tunataka kuchukua nafasi na parameter 2 ni mpya kamba.

Ukamataji makundi katika Regex hutuwezesha kuendelea maeneo ya kamba. katika Regex, chochote kuweka katika mabano ni alitekwa kutumia baadaye. mfano. (.+)Bank(.+) hunasa chochote kabla na baada ya wahusika 'Bank'. Tunaweza kutumia sehemu hizi alitekwa, kwa kutumia $ na idadi. 1 mabano hunasa katika $1 na mabano 2 hunasa katika $2 na kadhalika…

Katika parameter 1, sisi kutaja kamba ya zamani ambayo tunataka kuchukua nafasi, na wakati huo huo sisi kukamata maeneo ya string kwamba tunataka kuendelea (kukamata). Katika vigezo 2, kamba mpya anatumia sehemu alitekwa kwamba tunataka kuendelea, pamoja na kamba mpya yenyewe mfano. '$1Credit Card$2'.

matokeo:

Mode LastWrite Muda Jina Urefu
----       ---------      ----            ------   ----
-a ----     10/06/2018     12:40              0 1 = 9.8.16 Kadi ya mikopo Statement 298.67.pdf
-a ----     10/06/2018     12:40              0 2 = 9.9.16 Kadi ya mikopo Statement 134.74.pdf
-a ----     10/06/2018     12:41              0 3 = 9.10.16 Kadi ya mikopo Statement 123.43.pdf -a ----     10/06/2018     12:41              0 4 = 9.11.16 Kadi ya mikopo Statement 134.54.pdf -a ----     10/06/2018     12:41              0 5 = 9.12.16 Kadi ya mikopo Statement 157.98.pdf -a ----     10/06/2018     12:41              0 6 = 9.1.17 Kadi ya mikopo Statement 123.45.pdf

Kuondoka na Jibu