ວິທີການ 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 ຄວນຍັງຄົງຄືເກົ່າ.
ເພື່ອໃຫ້ບັນລຸນີ້, ພວກເຮົາຈະໄດ້ຮັບການນໍາໃຊ້ Windows PowerShell ກັບ Regex.
ການລາຍການທັງຫມົດລາຍງານທະນາຄານ, ພວກເຮົານໍາໃຊ້ ls ຄໍາສັ່ງ, ຫຼັງຈາກນັ້ນທໍ່ນ້ຜົນຜະລິດ
ls | -newname ren {$_.name -replace('(.+)ທະນາຄານ(.+)','$1Credit Card$2')}
ຄໍາສັ່ງ rename ຖືກນໍາໃຊ້ຫຼັງຈາກທໍ່ນ້ໍທີ່ຈະປ່ຽນຊື່ໄຟລ໌. $_ ແມ່ນວັດຖຸທີ່ຖືຜົນຜະລິດໄດ້ກ່ອນທີ່ຈະທໍ່ນັ້ນ, ແລະພວກເຮົາກໍາລັງໃຊ້ຊື່ຄຸນສົມບັດຂອງການ $_ ວັດຖຸ. -replace ຖືກນໍາໃຊ້ໃນສາຍໃນ 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
