
需要找到檔案名稱中的最後一個底線並刪除其後面的所有內容(包括最後一個底線)。
例如檔案名稱:
abc_erf_dsgd_fd12458.txt
預期結果:
abc_erf_dsgd.txt
注意:檔案名稱中出現的底線數量是動態的,本質上不是固定的。
某些文件可能只有 2 個底線,而其他文件可能 最多有 6 個底線。
最好是 Windows 批次腳本,它可以做到這一點,而不是 powershell 命令。
答案1
@Echo off
set file=abc_erf_dsgd_fd12458.txt
for %%A in (%file%) do set Ext=%%~xA
set remove=%file%
:loop
if "%remove%" neq "%remove:*_=%" Set "remove=%remove:*_=%"&goto :loop
call set filenew=%%file:_%remove%=%%%Ext%"
set file
範例輸出:
> SU_1220967.cmd
file=abc_erf_dsgd_fd12458.txt
filenew=abc_erf_dsgd.txt"
該批次
- 首先將副檔名放入 var 中
Ext
remove
然後使用字串替換在循環中刪除所有文字(直到並包括下劃線)後創建一個包含檔案名稱其餘部分的 var 。remove
透過不替換任何內容並重新套用副檔名來建立新檔名