כיצד שינוי שם אצווה חלק filename ב- Windows PowerShell באמצעות ביטוי רגולרי?

בדוגמה זו, יש לנו 6 קבצים מתחת עם תאריך שם הקובץ:

שם אורך המצב LastWriteTime
----                -------------         ------ ----
-א----       10/06/2018     12:40              0 1 = 9.8.16 298.67.pdf הצהרת הבנק
-א----       10/06/2018     12:40              0 2 = 9.9.16 134.74.pdf הצהרת הבנק
-א----       10/06/2018     12:41              0 3 = 9.10.16 123.43.pdf הצהרת הבנק
-א----       10/06/2018     12:41              0 4 = 9.11.16 134.54.pdf הצהרת הבנק
-א----       10/06/2018     12:41              0 5 = 9.12.16 157.98.pdf הצהרת הבנק
-א----       10/06/2018     12:41              0 6 = 9.1.17 123.45.pdf הצהרת הבנק

כאן, שם הקובץ מכיל סדרתי # בהתחלה, ואחריו =, ואחריו "הצהרת בנק’ ואחריו סוף ליתרה בדוח.

קבצים אלה נמצאים דוחות כרטיס אשראי העובדה והמילה "בנק’ צריך להיות מוחלף על ידי "כרטיס האשראי" המילים. כל שאר filename אמור להישאר באותה רמה.

כדי להשיג זאת, אנחנו נהיה באמצעות Windows PowerShell עם Regex.

רשימה מלאה של כל דוחות הבנק, אנו משתמשים ls פקודה, אז צינור הפלט

ls | -newname רן {$_.name -replace('(.+)בַּנק(.+)','$1Credit Card$2')}

פקודת שינוי השם משמשת לאחר הצינור לשנות את שמות הקבצים. $_ האובייקט הוא שמחזיק את הפלט לפני הצינור, ואנחנו באמצעות המאפיין שם $_ לְהִתְנַגֵד. -replace משמש על מחרוזות ב PowerShell, מחליף מחרוזת עם מחרוזת חדשה. -replace היא פונקציה שלוקחת 2 פרמטרים. הפרמטר 1 הוא המחרוזת הישנה שאנחנו רוצים להחליף את פרמטר 2nd הוא המחרוזת החדשה.

לכידת קבוצות Regex מאפשרת לנו לשמור על חלקים של המחרוזת. בשנת Regex, דבר לשים בסוגריים נלכד להשתמש מאוחר יותר. לדוגמא:. (.+)Bank(.+) לוכד דבר לפני ואחרי "הבנק" התווים. אנו יכולים להשתמש בחלקים שנתפסו אלה, על ידי שימוש ב $ ומספר. הסוגריים -1 לוכדים לתוך $1 ואת בסוגר 2nd לוכדים לתוך $2 וכו…

בפרמטר 1, אנו לציין את המחרוזת הישנה שאנחנו רוצים להחליף, ובאותו הזמן אנחנו ללכוד החלקים של המחרוזת כי אנחנו רוצים לשמור (לִלְכּוֹד). בפרמטר 2, המחרוזת החדשה משתמשת בחלקים שנתפסו כי אנחנו רוצים לשמור, כמו גם את המחרוזת החדשה עצמה למשל. '$1Credit Card$2'.

תוֹצָאָה:

שם אורך מצב LastWrite זמן
----       ---------      ----            ------   ----
-א----     10/06/2018     12:40              0 1 = 9.8.16 298.67.pdf פירוט כרטיס אשראי
-א----     10/06/2018     12:40              0 2 = 9.9.16 134.74.pdf פירוט כרטיס אשראי
-א----     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 פירוט כרטיס אשראי