วิธีการแบทช์เปลี่ยนชื่อส่วนหนึ่งของชื่อไฟล์ใน Windows PowerShell ใช้ regex ไม่?

ในตัวอย่างนี้, เรามี 6 ไฟล์ต่อไปนี้กับวันที่และชื่อไฟล์ดังต่อไปนี้:

โหมด LastWriteTime ความยาวชื่อ
----                -------------         ------ ----
---- โดย-       10/06/2018     12:40              0 1 = 9.8.16 ธนาคาร 298.67.pdf งบ
-a ----       10/06/2018     12:40              0 2 = 9.9.16 ธนาคาร 134.74.pdf งบ
-a ----       10/06/2018     12:41              0 3 = 9.10.16 ธนาคาร 123.43.pdf งบ
-a ----       10/06/2018     12:41              0 4 = 9.11.16 ธนาคาร 134.54.pdf งบ
-a ----       10/06/2018     12:41              0 5 = 9.12.16 ธนาคาร 157.98.pdf งบ
-a ----       10/06/2018     12:41              0 6 = 9.1.17 ธนาคาร 123.45.pdf งบ

ที่นี่, ชื่อไฟล์มีอนุกรม # ในขั้นต้น, ตามด้วย =, ตามด้วย ‘บัญชีธนาคาร’ ตามมาด้วยการสิ้นสุดของความสมดุลคำสั่ง.

ไฟล์เหล่านี้อยู่ในงบบัตรเครดิตและความเป็นจริงคำว่า ‘ธนาคาร’ จะต้องถูกแทนที่ด้วย ‘บัตรเครดิต’ คำ. ส่วนที่เหลือทั้งหมดของชื่อไฟล์ควรยังคงเหมือนเดิม.

เพื่อที่จะบรรลุเป้าหมายนี้, we will be using หน้าต่าง PowerShell with Regex.

รายการทั้งหมดงบธนาคาร, เราใช้ ls คำสั่ง, แล้วท่อเอาท์พุท

LS | -newname Ren {$_.name -replace('(.+)ธนาคาร(.+)','บัตร 1Credit $ $ 2')}

คำสั่งเปลี่ยนชื่อถูกนำมาใช้หลังจากที่ท่อที่จะเปลี่ยนชื่อไฟล์. $_ เป็นวัตถุที่เก็บผลผลิตก่อนท่อ, และเราจะใช้ชื่อสถานที่ให้บริการของ $_ วัตถุ. -replace is used on strings in PowerShell, ซึ่งแทนที่สตริงกับสตริงใหม่. -replace เป็นฟังก์ชั่นที่ใช้ 2 พารามิเตอร์. พารามิเตอร์ที่ 1 เป็นสตริงเก่าที่เราต้องการเพื่อทดแทนและพารามิเตอร์ที่ 2 เป็นสตริงใหม่.

จับภาพกลุ่มใน Regex ช่วยให้เราเก็บชิ้นส่วนของสตริง. ใน Regex, อะไรใส่ในวงเล็บถูกจับภาพเพื่อใช้ในภายหลัง. เช่น. (.+)Bank(.+) จับอะไรก่อนและหลังของตัวละครธนาคาร '. เราสามารถใช้ชิ้นส่วนเหล่านี้ถูกจับ, โดยใช้ $ และจำนวน. วงเล็บ 1 จับเข้า $1 และวงเล็บที่ 2 จับเข้า $2 ฯลฯ…

ในพารามิเตอร์ที่ 1, เราระบุสตริงเก่าที่เราต้องการที่จะเข้ามาแทนที่, และในเวลาเดียวกันกับที่เราจับชิ้นส่วนของสตริงที่เราต้องการที่จะเก็บ (การจับกุม). ในพารามิเตอร์ 2, สตริงใหม่จะใช้ชิ้นส่วนที่ถูกจับได้ว่าเราต้องการที่จะเก็บ, เช่นเดียวกับสตริงใหม่ของตัวเองเช่น. '$1Credit Card$2'.

ผล:

โหมด LastWrite เวลาความยาวชื่อ
----       ---------      ----            ------   ----
---- โดย-     10/06/2018     12:40              0 1 = 9.8.16 บัตรเครดิตงบ 298.67.pdf
-a ----     10/06/2018     12:40              0 2 = 9.9.16 บัตรเครดิตงบ 134.74.pdf
-a ----     10/06/2018     12:41              0 3 = 9.10.16 บัตรเครดิตงบ 123.43.pdf -a ----     10/06/2018     12:41              0 4 = 9.11.16 บัตรเครดิตงบ 134.54.pdf -a ----     10/06/2018     12:41              0 5 = 9.12.16 บัตรเครดิตงบ 157.98.pdf -a ----     10/06/2018     12:41              0 6 = 9.1.17 บัตรเครดิตงบ 123.45.pdf

ใส่ความเห็น