Windows命令

Windows命令

需要找到檔案名稱中的最後一個底線並刪除其後面的所有內容(包括最後一個底線)。

例如檔案名稱:

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透過不替換任何內容並重新套用副檔名來建立新檔名

相關內容