批处理脚本重命名文件

Batch script rename file

我有一个名为 xxxxxxx_12345.pdf 的文件,我尝试删除后缀,结果是 xxxxxxx.pdf。 我试过以下:

forfiles /S /M *_12545.pdf /C "cmd /c rename @file @fname*.pdf"

但是无法更改文件名。 有人可以帮助解决这个问题吗? 谢谢

我确定有一种方法可以使用 forfiles 命令来完成这项工作,但是,为此使用常规 for 循环会容易得多。

@echo off
pushd %~dp0
setLocal EnableDelayedExpansion

for %%f in (*_12545.pdf) do (
    set "CurrentFileName=%%~nf"
    set "RenameTo=!CurrentFileName:~0,-6!"
    echo.ren !CurrentFileName!%%~xf !RenameTo!%%~xf
)

pause>nul

通过 setLocal EnableDelayedExpansion,用户可以使用延迟环境变量,这将使用户能够使用类似 !variable! 而不是 %variable%

set "CurrentFileName=%%~nf"

%%~nf 将为您提供不带扩展名的文件名,因此在这种情况下,CurrentFileName 将为 FileName_12545。键入 for /? 以查看语法的完整说明。

set "RenameTo=!CurrentFileName:~0,-6!"

请注意,我使用 !variable:~0,-6! 删除后缀。这是String Manipulation。用户正在存储一个没有后缀的字符串,长度为 6(在本例中为 _12545)。

echo.ren !CurrentFileName!%%~xf !RenameTo!%%~xf

我将 echo 放在了 ren 前面,这样您可以在实际重命名之前进行检查。 %%~xf 将 return 文件扩展名前面加上 .(点)。在本例中,文件扩展名为 .pdf。

希望对您有所帮助。