Cara bets mengubah nama bagian dari nama file di Windows PowerShell menggunakan Regex?
Dalam contoh ini, kita punya 6 file di bawah ini dengan tanggal dan nama file di bawah ini:
Mode LastWriteTime Panjang Nama ---- ------------- ------ ---- -Sebuah---- 10/06/2018 12:40 0 1 = 9.8.16 Pernyataan 298.67.pdf Bank -Sebuah---- 10/06/2018 12:40 0 2 = 9.9.16 Pernyataan 134.74.pdf Bank -Sebuah---- 10/06/2018 12:41 0 3 = 9.10.16 Pernyataan 123.43.pdf Bank -Sebuah---- 10/06/2018 12:41 0 4 = 9.11.16 Pernyataan 134.54.pdf Bank -Sebuah---- 10/06/2018 12:41 0 5 = 9.12.16 Pernyataan 157.98.pdf Bank -Sebuah---- 10/06/2018 12:41 0 6 = 9.1.17 Pernyataan 123.45.pdf Bank
Sini, nama file berisi serial # pada awalnya, diikuti oleh =, diikuti oleh ‘Pernyataan Bank’ diikuti dengan akhir saldo laporan.
File-file ini berada di Laporan Kartu fakta Kredit dan kata ‘Bank’ perlu diganti dengan ‘Kartu Kredit’ kata-kata. Semua sisa nama file harus tetap sama.
Dalam rangka untuk mencapai hal ini, kita akan menggunakan Jendela PowerShell dengan Regex.
Untuk daftar semua laporan bank, kita menggunakan ls
perintah, maka pipa output
ls | -newname ren {$_.name -replace('(.+)Bank(.+)','$ 1Credit Card $ 2')}
Perintah ganti nama digunakan setelah pipa untuk mengubah nama file. $_
adalah objek yang memegang output sebelum pipa, dan kita menggunakan properti nama $_
obyek. -replace
digunakan pada string dalam PowerShell, yang menggantikan string dengan string baru. -replace
adalah fungsi yang mengambil 2 parameter. Parameter 1 adalah string tua yang ingin kita ganti dan 2 parameter adalah string baru.
Menangkap kelompok dalam Regex memungkinkan kita menjaga bagian dari string. dalam Regex, apapun dimasukkan ke dalam kurung ditangkap untuk digunakan kemudian. misalnya. (.+)Bank(.+)
menangkap apa pun sebelum dan setelah karakter ‘Bank’. Kita bisa menggunakan bagian-bagian yang ditangkap, dengan menggunakan $
dan nomor. The 1st kurung menangkap ke $1
dan 2 kurung menangkap ke $2
dll…
Pada parameter 1, kita tentukan string tua yang ingin kita ganti, dan pada saat yang sama kita menangkap bagian-bagian dari string yang ingin kita terus (menangkap). Dalam 2 parameter, string baru menggunakan bagian-bagian yang diambil yang ingin kita terus, serta baru string itu sendiri misalnya. '$1Credit Card$2'
.
Hasil:
Mode LastWrite Waktu Panjang Nama ---- --------- ---- ------ ---- -Sebuah---- 10/06/2018 12:40 0 1 = 9.8.16 Kartu Kredit Pernyataan 298.67.pdf -Sebuah---- 10/06/2018 12:40 0 2 = 9.9.16 Kartu Kredit Pernyataan 134.74.pdf -Sebuah---- 10/06/2018 12:41 0 3 = 9.10.16 Kartu Kredit Pernyataan 123.43.pdf -a ---- 10/06/2018 12:41 0 4 = 9.11.16 Kartu Kredit Pernyataan 134.54.pdf -a ---- 10/06/2018 12:41 0 5 = 9.12.16 Kartu Kredit Pernyataan 157.98.pdf -a ---- 10/06/2018 12:41 0 6 = 9.1.17 Kartu Kredit Pernyataan 123.45.pdf