2017-03-26 292 views
1

我有一个名为xxxxxxx_12345.pdf的文件,我尝试删除后缀,结果为xxxxxxx.pdf。 我尝试以下操作:批处理脚本重命名文件

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

但不能更改文件名。 somone可以帮助解决这个问题吗? 谢谢

+1

如果你确实有**文件**,那么根本就不需要forfiles。 – Compo

回答

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会给你的文件的名称,没有扩展,所以在这种情况下,CurrentFileNameFileName_12545。请输入for /?以查看语法的完整说明。

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

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

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

我把echoren前面,这样你可以检查之前,你实际上是将其重命名。 %%~xf将返回包括。(点)在其前面的文件扩展名。在这种情况下,文件扩展名是.pdf。

我希望这会有所帮助。

+0

谢谢你,老虎它 – Esmael