如何在某些条件下使用.bat 文件重命名多个图像?

如何在某些条件下使用.bat 文件重命名多个图像?

在我的示例中,我有两个文件,名称分别是
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"}

相关内容