ວິທີການ batch ປ່ຽນຊື່ສ່ວນຫນຶ່ງຂອງຊື່ໄຟໃນ Windows PowerShell ໃຊ້ Regex ໄດ້?

ໃນຕົວຢ່າງນີ້, ພວກ​ເຮົາ​ມີ 6 ໄຟຕ່ໍາກວ່າທີ່ມີວັນທີແລະ filename ຂ້າງລຸ່ມນີ້:

Mode LastWriteTime Length ຊື່
----                -------------         ------ ----
-ທີ່ລະບຸ ----       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 ການ

ນີ້, ຊື່ໄຟປະກອບດ້ວຍ serial ເປັນ # ໃນຕອນເລີ່ມຕົ້ນ, ຕິດຕາມມາດ້ວຍ =, ຕິດຕາມມາດ້ວຍ 'ການທະນາຄານ’ ປະຕິບັດຕາມໃນຕອນທ້າຍຂອງຍອດຖະແຫຼງການ.

ໄຟລ໌ເຫຼົ່ານີ້ຢູ່ໃນງົບບັດຈິງເຄດິດແລະຄໍາວ່າ "ທະນາຄານ’ ຕ້ອງການທີ່ຈະໄດ້ຮັບການທົດແທນໂດຍ 'ບັດເຄດິດ' ຄໍາ. ທັງຫມົດສ່ວນທີ່ເຫຼືອຂອງ filename ຄວນຍັງຄົງຄືເກົ່າ.

ເພື່ອໃຫ້ບັນລຸນີ້, we will be using Windows PowerShell with Regex.

ການລາຍການທັງຫມົດລາຍງານທະນາຄານ, ພວກເຮົານໍາໃຊ້ ls ຄໍາສັ່ງ, ຫຼັງຈາກນັ້ນທໍ່ນ້ຜົນຜະລິດ

ls | -newname ren {$_.name -replace('(.+)ທະນາຄານ(.+)','ບັດ 1Credit $ $ 2')}

ຄໍາສັ່ງ rename ຖືກນໍາໃຊ້ຫຼັງຈາກທໍ່ນ້ໍທີ່ຈະປ່ຽນຊື່ໄຟລ໌. $_ ແມ່ນວັດຖຸທີ່ຖືຜົນຜະລິດໄດ້ກ່ອນທີ່ຈະທໍ່ນັ້ນ, ແລະພວກເຮົາກໍາລັງໃຊ້ຊື່ຄຸນສົມບັດຂອງການ $_ ວັດຖຸ. -replace is used on strings in PowerShell, ຊຶ່ງປ່ຽນແທນສະຕິງທີ່ມີ string ໃຫມ່. -replace ເປັນຟັງຊັນທີ່ໃຊ້ເວລາເປັນ 2 ຕົວກໍານົດການ. ພາລາມິເຕີທີ່ 1 ເປັນ string ອາຍຸວ່າພວກເຮົາຕ້ອງການທີ່ຈະທົດແທນການແລະພາລາມິເຕີທີ່ 2 ເປັນ string ໃຫມ່.

ຈັບກຸ່ມໃນ Regex ອະນຸຍາດໃຫ້ພວກເຮົາຮັກສາພາກສ່ວນຂອງສາຍອັກຂະລະ. ໃນ Regex, ຫຍັງເອົາໃຈໃສ່ໃນວົງເລັບແມ່ນ captured ການນໍາໃຊ້ໃນພາຍຫລັງ. ຕົວ​ຢ່າງ​:. (.+)Bank(.+) ຈັບອັນໃດກ່ອນແລະຫຼັງຈາກການລັກສະນະຂອງທະນາຄານ. ພວກເຮົາສາມາດນໍາໃຊ້ພາກສ່ວນຈັບເຫຼົ່ານີ້, ໂດຍການນໍາໃຊ້ $ ແລະຈໍານວນ. The ເລັບ 1 captures ເປັນ $1 ແລະວົງເລັບ 2 captures ເປັນ $2 ແລະອື່ນໆ…

ໃນພາລາມິເຕີທີ່ 1, ພວກເຮົາລະບຸ string ອາຍຸວ່າພວກເຮົາຕ້ອງການທີ່ຈະທົດແທນການ, ແລະໃນເວລາດຽວກັນພວກເຮົາເກັບກໍາພາກສ່ວນຂອງສາຍອັກຂະລະທີ່ພວກເຮົາຕ້ອງການທີ່ຈະຮັກສາ (ຈັບ). ໃນພາລາມິເຕີທີ່ 2, ສະຕິງໃຫມ່ໃຊ້ພາກສ່ວນ captured ທີ່ພວກເຮົາຕ້ອງການທີ່ຈະຮັກສາ, ເຊັ່ນດຽວກັນກັບສະຕິງໃຫມ່ຂອງຕົວມັນເອງເຊັ່ນ. '$1Credit Card$2'.

ຜົນ:

Mode LastWrite Time Length ຊື່
----       ---------      ----            ------   ----
-ທີ່ລະບຸ ----     10/06/2018     12:40              0 1 = 9.8.16 ບັດເຄດິດ Statement 298.67.pdf
-a ----     10/06/2018     12:40              0 2 = 9.9.16 ບັດເຄດິດ Statement 134.74.pdf
-a ----     10/06/2018     12:41              0 3 = 9.10.16 ບັດເຄດິດ Statement 123.43.pdf -a ----     10/06/2018     12:41              0 4 = 9.11.16 ບັດເຄດິດ Statement 134.54.pdf -a ----     10/06/2018     12:41              0 5 = 9.12.16 ບັດເຄດິດ Statement 157.98.pdf -a ----     10/06/2018     12:41              0 6 = 9.1.17 ບັດເຄດິດ Statement 123.45.pdf

ອອກຈາກ Reply ເປັນ