批处理脚本重命名文件
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。
希望对您有所帮助。
我有一个名为 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。
希望对您有所帮助。