如何使用批处理脚本重命名一组pdf文件

时间:2012-11-21 20:22:11

标签: batch-file rename

我知道有几个帖子已经解决了这个问题。但是,我不能让我的小批量脚本工作,我是一个新手,所以如果你能帮助我解决这个问题我会很高兴。

我有一堆用随机数和“_text”命名的pdf文件,例如174098_text.pdf。现在我想重命名文件,以便我只剩下174098.pdf(删除_text)。

这是我的文件“Rename.cmd”的最新版本:

@echo off
@setlocal
REM +++++++++++++++++++++++++++++++++++++++++++++++++
REM ++++++++ Umbenennen von Dateien ++++++++++++++++
REM +++++++++++++++++++++++++++++++++++++++++++++++++


REM +++ Dateinamen und Pfad ermitteln
FOR /f "delims=" %%D in ('Dir /b %Path%\*_*.pdf') do (
FOR /f "delims=_ tokens=1-2" %%I in ('%%D') do (
    ren %%D %%I.pdf
    )
)

Endlocal

我希望你能帮助我并解释我做错了什么。运行代码会打开所有文件,但不能重命名它们中的任何一个。

1 个答案:

答案 0 :(得分:0)

/ F参数用于OPENING命令和/或获取命令的输出,因此当您使用/ F的第二个时,您告诉CMD执行“%% D”文件,因此无法正常工作。

如果您需要递归文件夹,可以使用不带参数的FOR或/ R参数。

您无需为此工作启动setlocal

@echo off

FOR %%# in ("C:\Folder\*.pdf") DO (

    :: Set the "filename.extension"
    Set "File=%%~nx#"

    :: Rename it
    Call Rename "%%#" "%%FILE:_TEXT=%%"
    REM Explanation:
    REM Rename "filename_text.pdf" with "Filename(_Text=NOTHING).pdf"
    REM (That removes the "_TEXT" pattern in each filename)
)
pause&Exit

请记住,如果您需要递归:

FOR /R "C:\Folder\" %%@ in (*.pdf)