我有一个名为xxxxxxx_12345.pdf的文件,我尝试删除后缀,结果将是xxxxxxx.pdf。 我试过以下:
forfiles /S /M *_12545.pdf /C "cmd /c rename @file @fname*.pdf"
但无法更改文件名。 可以帮助解决这个问题吗? 感谢
答案 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。
我希望这有点帮助。