批处理脚本重命名文件

时间:2017-03-26 20:37:51

标签: batch-file batch-rename

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

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

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

1 个答案:

答案 0 :(得分:0)

我确信有一种方法可以使用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将返回文件扩展名,包括前面的。(点)。在这种情况下,文件扩展名为.pdf。

我希望这有点帮助。