需要找到文件名中的最后一个下划线并删除其后面的所有内容(包括最后一个下划线)。
例如文件名:
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
通过用空值替换并重新应用扩展名来构建新文件名