首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Windows命令行根据PDF中的文本重命名PDF

通过Windows命令行根据PDF中的文本重命名PDF
EN

Stack Overflow用户
提问于 2016-10-05 20:42:28
回答 1查看 269关注 0票数 0

我想要创建一个Windows批处理文件,它可以接受文件的名称作为参数,然后搜索PDF中的文本来重命名该文件。例如,我有一个名为123.pdf的文件,在该PDF文件中有一个文本"My Name: Paul“。我想创建一个123.pdf的新副本,并称之为Paul.pdf。我已经创建了下面的文件,但不幸的是,它不起作用,我认为问题是它试图将它重命名为“我的名字: Paul”。好消息是,由于pdftotext.exe,将PDF文本提取到txt文件很好。

请帮帮忙。

代码语言:javascript
复制
@ECHO OFF
SETLOCAL
SET "sourcedir=C:\"
set pdffile=%1
pdftotext.exe %pdffile%.pdf
FOR /f "delims=" %%a IN ('findstr /B /L /c:"My Name:" "%sourcedir%\%pdffile%.txt"') DO (

echo %%a

SET myname=%%a

SET myname=myname: =%
SET myname=myname::=%
echo %myname%

echo COPY %pdffile%.pdf %myname%.pdf
COPY %pdffile%.pdf %myname%.pdf
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-05 20:48:58

当然,您是对的:您不能在Windows中使用带有:的名称重命名文件,因为它是驱动器/路径分隔符。

对于您的脚本,您必须为myname启用延迟扩展,然后在循环中使用!而不是% (还解决了从myname中删除空格和冒号时出现的问题,而不是前缀!)

代码语言:javascript
复制
@ECHO OFF
setlocal ENABLEDELAYEDEXPANSION
SET "sourcedir=C:\"
set pdffile=%1
pdftotext.exe %pdffile%.pdf
FOR /f "delims=" %%a IN ('findstr /B /L /c:"My Name:" "%sourcedir%\%pdffile%.txt"') DO (

echo %%a

SET myname=%%a

rem ok but that doesn't remove My Name prefix
rem SET myname=!myname: =!
rem SET myname=!myname::=!
rem this does:
set myname=!myname:My Name:=!

echo COPY %pdffile%.pdf !myname!.pdf
COPY "%pdffile%.pdf" "!myname!.pdf"
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39883295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档