我想要创建一个Windows批处理文件,它可以接受文件的名称作为参数,然后搜索PDF中的文本来重命名该文件。例如,我有一个名为123.pdf的文件,在该PDF文件中有一个文本"My Name: Paul“。我想创建一个123.pdf的新副本,并称之为Paul.pdf。我已经创建了下面的文件,但不幸的是,它不起作用,我认为问题是它试图将它重命名为“我的名字: Paul”。好消息是,由于pdftotext.exe,将PDF文本提取到txt文件很好。
请帮帮忙。
@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
)发布于 2016-10-05 20:48:58
当然,您是对的:您不能在Windows中使用带有:的名称重命名文件,因为它是驱动器/路径分隔符。
对于您的脚本,您必须为myname启用延迟扩展,然后在循环中使用!而不是% (还解决了从myname中删除空格和冒号时出现的问题,而不是前缀!)
@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"
)https://stackoverflow.com/questions/39883295
复制相似问题