តើធ្វើដូចម្តេចដើម្បីបាច់ប្តូរឈ្មោះជាផ្នែកមួយនៃឈ្មោះឯកសារនៅក្នុង 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 ប្រព័ន្ធ​ប្រតិបត្តិការ Windows PowerShell with Regex.

របាយការណ៍ធនាគារដើម្បីរាយទាំងអស់, យើងប្រើ ls ពាក្យបញ្ជា, បន្ទាប់មកបំពង់លទ្ធផល

ls | -newname រ៉ែន {$_.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 កាតឥណទាន -a 123.43.pdf សេចក្តីថ្លែងការណ៍ ----     10/06/2018     12:41              0 4 = 9.11.16 កាតឥណទាន -a 134.54.pdf សេចក្តីថ្លែងការណ៍ ----     10/06/2018     12:41              0 5 = 9.12.16 កាតឥណទាន -a 157.98.pdf សេចក្តីថ្លែងការណ៍ ----     10/06/2018     12:41              0 6 = 9.1.17 123.45.pdf សេចក្តីថ្លែងការណ៍កាតឥណទាន

ទុក​ឱ្យ​ឆ្លើយ​តប​មួយ