Bagaimana untuk batch menamakan semula sebahagian daripada nama fail dalam Windows PowerShell menggunakan Regex?

Dalam contoh ini, kita ada 6 fail di bawah dengan tarikh dan nama fail di bawah:

Mod LastWriteTime Negara Nama
----                -------------         ------ ----
-yang ----       10/06/2018     12:40              0 1 = 9.8.16 Penyata Bank 298.67.pdf
-a ----       10/06/2018     12:40              0 2 = 9.9.16 Penyata Bank 134.74.pdf
-a ----       10/06/2018     12:41              0 3 = 9.10.16 Penyata Bank 123.43.pdf
-a ----       10/06/2018     12:41              0 4 = 9.11.16 Penyata Bank 134.54.pdf
-a ----       10/06/2018     12:41              0 5 = 9.12.16 Penyata Bank 157.98.pdf
-a ----       10/06/2018     12:41              0 6 = 9.1.17 Penyata Bank 123.45.pdf

di sini, nama fail yang mengandungi siri yang # pada permulaan, diikuti oleh =, diikuti dengan Penyata Bank’ diikuti oleh akhir baki penyata.

Fail-fail ini berada di dalam Penyata Kad Kredit fakta dan perkataan 'Bank’ keperluan untuk digantikan dengan 'Kad Kredit' kata-kata. Semua yang lain nama fail harus tetap sama.

Dalam usaha untuk mencapai matlamat ini, we will be using Windows PowerShell with Regex.

Untuk menyenaraikan semua penyata bank, kita menggunakan ls arahan, maka paip output

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

Arahan penamaan semula digunakan selepas paip untuk menamakan semula fail. $_ adalah objek yang memegang output sebelum paip, dan kita menggunakan harta nama daripada $_ objek. -replace is used on strings in PowerShell, yang menggantikan rentetan dengan tali baru. -replace adalah fungsi yang mengambil 2 parameter. Parameter 1 adalah rentetan lama yang kita mahu untuk menggantikan dan parameter-2 adalah rentetan baru.

Menangkap kumpulan Regex membolehkan kita menyimpan bahagian rentetan. dalam Regex, apa-apa yang dimasukkan ke dalam kurungan ditangkap untuk digunakan kemudian. contohnya. (.+)Bank(.+) menangkap apa-apa sebelum dan selepas 'Bank' watak-watak. Kita boleh menggunakan bahagian-bahagian ditangkap, dengan menggunakan $ dan sejumlah. The kurungan 1st menangkap ke dalam $1 dan kurungan-2 menangkap ke dalam $2 dan lain-lain…

Dalam parameter 1, kita menentukan rentetan lama yang kita mahu menggantikan, dan pada masa yang sama, kami menangkap bahagian-bahagian rentetan yang kami mahu mengekalkan (menangkap). Dalam parameter-2, rentetan baru menggunakan bahagian-bahagian yang ditangkap yang kita hendak simpan, serta rentetan baru itu sendiri contohnya. '$1Credit Card$2'.

keputusan:

Mod LastWrite Masa Panjang Nama
----       ---------      ----            ------   ----
-yang ----     10/06/2018     12:40              0 1 = 9.8.16 Penyata Kad kredit 298.67.pdf
-a ----     10/06/2018     12:40              0 2 = 9.9.16 Penyata Kad kredit 134.74.pdf
-a ----     10/06/2018     12:41              0 3 = 9.10.16 Kad kredit Penyata 123.43.pdf -a ----     10/06/2018     12:41              0 4 = 9.11.16 Kad kredit Penyata 134.54.pdf -a ----     10/06/2018     12:41              0 5 = 9.12.16 Kad kredit Penyata 157.98.pdf -a ----     10/06/2018     12:41              0 6 = 9.1.17 Penyata Kad kredit 123.45.pdf

Tinggalkan Jawapan