2

我知道已经有几个帖子解决了这个问题。但是我无法让我的小批处理脚本工作,而且我是一个新手,所以如果你能帮助我解决这个问题,我会非常高兴。

我有一堆用随机数和“_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

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

4

1 回答 1

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)
于 2012-11-21T20:55:03.937 回答