在我的示例中,我有两个文件,名称分别是
test_20554783jsd.jpg
test_1_2021848ing.jpg
我需要在下划线(“_”)后重命名这些文件,并且我希望名称像
test.jpg
test_1.jpg
我已经有代码了
@echo off
for /F "delims=" %%I in ('dir /A-D /B *_* 2^>nul') do (
for /F "tokens=1 delims=_ " %%J in ("%%~nI") do ren "%%I" "%%J%%~xI"
)
但问题是它从开头删除了下划线(“_”)。我不需要这个,因为有些文件名包含下划线。所以我需要删除下划线后的所有字母,包括最后的下划线。
有人可以优化我的代码吗
,谢谢,
答案1
虽然它没有直接回答你的问题。但是,你可以使用 PowerShell 来实现这一点,因为它也支持使用正则表达式。
我使用下面的方法来实现这一点:
Get-ChildItem . -file -Filter "*_*.jpg" | Rename-Item -newname { $_.name -replace "_[^_]+$", ".jpg"}