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"

批次

  • 首先将扩展名放入 varExt
  • remove然后通过使用字符串替换在循环中删除所有文本直到下划线(包括下划线)之后,创建一个包含文件名其余部分的 var 。
  • remove通过用空值替换并重新应用扩展名来构建新文件名

相关内容