我知道有几个帖子已经解决了这个问题。但是,我不能让我的小批量脚本工作,我是一个新手,所以如果你能帮助我解决这个问题我会很高兴。
我有一堆用随机数和“_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
我希望你能帮助我并解释我做错了什么。运行代码会打开所有文件,但不能重命名它们中的任何一个。
答案 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)