我有一个名为xxxxxxx_12345.pdf的文件,我尝试删除后缀,结果为xxxxxxx.pdf。 我尝试以下操作:批处理脚本重命名文件
forfiles /S /M *_12545.pdf /C "cmd /c rename @file @fname*.pdf"
但不能更改文件名。 somone可以帮助解决这个问题吗? 谢谢
我有一个名为xxxxxxx_12345.pdf的文件,我尝试删除后缀,结果为xxxxxxx.pdf。 我尝试以下操作:批处理脚本重命名文件
forfiles /S /M *_12545.pdf /C "cmd /c rename @file @fname*.pdf"
但不能更改文件名。 somone可以帮助解决这个问题吗? 谢谢
我敢肯定,有一种方法可以用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。
我希望这会有所帮助。
谢谢你,老虎它 – Esmael
如果你确实有**文件**,那么根本就不需要forfiles。 – Compo