Làm thế nào để đổi tên hàng loạt là một phần của tên tập tin trong Windows PowerShell bằng Regex?

Trong ví dụ này, chúng ta có 6 file dưới đây với ngày tháng và tên tập tin dưới đây:

Chế độ LastWriteTime Tên Chiều dài
----                -------------         ------ ----
-một ----       10/06/2018     12:40              0 1 = 9.8.16 Ngân hàng Phát Biểu 298.67.pdf
-a ----       10/06/2018     12:40              0 2 = 9.9.16 Ngân hàng Phát Biểu 134.74.pdf
-a ----       10/06/2018     12:41              0 3 = 9.10.16 Ngân hàng Phát Biểu 123.43.pdf
-a ----       10/06/2018     12:41              0 4 = 9.11.16 Ngân hàng Phát Biểu 134.54.pdf
-a ----       10/06/2018     12:41              0 5 = 9.12.16 Ngân hàng Phát Biểu 157.98.pdf
-a ----       10/06/2018     12:41              0 6 = 9.1.17 Ngân hàng Phát Biểu 123.45.pdf

Đây, tên tập tin chứa một sê-ri # lúc bắt đầu, tiếp theo =, tiếp theo là ‘Tuyên bố Ngân hàng’ tiếp theo là cuối cân bằng tuyên bố.

Những tập tin này trong Báo cáo Thẻ thực tế tín dụng và từ ‘Ngân hàng’ cần phải được thay thế bằng những từ ‘Thẻ tín dụng’. Tất cả các phần còn lại của tên tập tin nên vẫn như cũ.

Để đạt được điều này, chúng tôi sẽ sử dụng Cửa sổ PowerShell với Regex.

Để liệt kê tất cả các báo cáo ngân hàng, chúng tôi sử dụng ls chỉ huy, sau đó ống đầu ra

ls | -newname ren {$_.name -replace('(.+)ngân hàng(.+)','1Credit Thẻ $ $ 2')}

Lệnh đổi tên được sử dụng sau khi đường ống để đổi tên các tập tin. $_ là đối tượng chứa đầu ra trước ống, và chúng tôi đang sử dụng thuộc tính tên của $_ vật. -replace được sử dụng trên dây trong PowerShell, thay thế một chuỗi với một chuỗi mới. -replace là một hàm mang theo 2 thông số. Tham số 1 là chuỗi cũ mà chúng tôi muốn thay thế và tham số thứ 2 là chuỗi mới.

Chụp nhóm trong Regex cho phép chúng tôi giữ các bộ phận của chuỗi. trong Regex, bất cứ điều gì đặt trong ngoặc được chụp để sử dụng sau. ví dụ:. (.+)Bank(.+) chụp bất cứ điều gì trước và sau khi các ký tự ‘Ngân hàng’. Chúng ta có thể sử dụng các bộ phận này bị bắt, bằng cách sử dụng $ và một số. Ngoặc 1st chụp vào $1 và ngoặc 2nd chụp vào $2 vv…

Trong tham số 1, chúng tôi chỉ định chuỗi cũ mà chúng tôi muốn thay thế, và đồng thời chúng tôi nắm bắt được các bộ phận của chuỗi mà chúng tôi muốn giữ (bắt). Trong tham số thứ 2, chuỗi mới sử dụng những phần bị bắt mà chúng tôi muốn giữ, cũng như các chuỗi mới bản thân ví dụ. '$1Credit Card$2'.

Kết quả:

Chế độ LastWrite Time Thời lượng Tên
----       ---------      ----            ------   ----
-một ----     10/06/2018     12:40              0 1 = 9.8.16 Thẻ tín dụng Statement 298.67.pdf
-a ----     10/06/2018     12:40              0 2 = 9.9.16 Thẻ tín dụng Statement 134.74.pdf
-a ----     10/06/2018     12:41              0 3 = 9.10.16 Thẻ tín dụng Statement 123.43.pdf -a ----     10/06/2018     12:41              0 4 = 9.11.16 Thẻ tín dụng Statement 134.54.pdf -a ----     10/06/2018     12:41              0 5 = 9.12.16 Thẻ tín dụng Statement 157.98.pdf -a ----     10/06/2018     12:41              0 6 = 9.1.17 Thẻ tín dụng Statement 123.45.pdf

Gửi phản hồi