如何使用 CMD 根据内容对 .pdf 进行排序
How to sort .pdf based on their content using CMD
我有大约 200 个 PDF 文档将被保存在一个文件夹中(每天),我必须根据它们的内容对它们进行排序。 (所有 pdf 文档中都有字符串“X_P1
”或“X_P2
”)
我的第一步是使用 XPDF
:
将 .pdf
文件转换为 a.txt
文件
for /r %%i in (*pdf) do "C:\Users\xxx\pdftotext.exe" -layout "%%i"
所以我最终在一个文件夹中有 200 个 PDF 文件和 200 个文本文件。
看起来像这样:
p100.pdf
p100.txt
p101.pdf
p101.txt
...
所以下一步我想用FINDSTR
在.txt
文件中搜索字符串“X_P1
”并将文件名保存为变量。 (例如p100
)下一步:将名称与变量相同的所有文件移动到文件夹中。
我对 batch/powershell 不是很熟悉,所以我如何处理 FINDSTR
的结果。我想也许可以使用 errorlevels
?所以如果我得到 ERORRLEVEL 0
移动到文件夹 1 .
(所有 pdf 文档中都有字符串 "X_P1" 或 "X_P2")
根据内容排序。
将 .pdf 转换为文本。如果找到 "X_P1" 移动到 xp1
如果没有移动到 xp2
.
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
REM begin debug
REM del "%userprofile%\Desktop\*.pdf" 2>nul
REM rd /q /s xp1 2>nul
REM rd /q /s xp2 2>nul
REM copy /y "%userprofile%\Desktop\New Folder\*.pdf" "%userprofile%\Desktop\" 1>nul
REM end debug
md xp1 2>nul
md xp2 2>nul
for /f %%a in ('dir /b *.pdf') do (
pdftotext.exe -raw %%a tmp.txt
find "X_P1" tmp.txt > nul && move %%a xp1 || move %%a xp2
)
del tmp.txt
exit /b
我有大约 200 个 PDF 文档将被保存在一个文件夹中(每天),我必须根据它们的内容对它们进行排序。 (所有 pdf 文档中都有字符串“X_P1
”或“X_P2
”)
我的第一步是使用 XPDF
:
.pdf
文件转换为 a.txt
文件
for /r %%i in (*pdf) do "C:\Users\xxx\pdftotext.exe" -layout "%%i"
所以我最终在一个文件夹中有 200 个 PDF 文件和 200 个文本文件。
看起来像这样:
p100.pdf
p100.txt
p101.pdf
p101.txt
...
所以下一步我想用FINDSTR
在.txt
文件中搜索字符串“X_P1
”并将文件名保存为变量。 (例如p100
)下一步:将名称与变量相同的所有文件移动到文件夹中。
我对 batch/powershell 不是很熟悉,所以我如何处理 FINDSTR
的结果。我想也许可以使用 errorlevels
?所以如果我得到 ERORRLEVEL 0
移动到文件夹 1 .
(所有 pdf 文档中都有字符串 "X_P1" 或 "X_P2")
根据内容排序。
将 .pdf 转换为文本。如果找到 "X_P1" 移动到 xp1
如果没有移动到 xp2
.
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
REM begin debug
REM del "%userprofile%\Desktop\*.pdf" 2>nul
REM rd /q /s xp1 2>nul
REM rd /q /s xp2 2>nul
REM copy /y "%userprofile%\Desktop\New Folder\*.pdf" "%userprofile%\Desktop\" 1>nul
REM end debug
md xp1 2>nul
md xp2 2>nul
for /f %%a in ('dir /b *.pdf') do (
pdftotext.exe -raw %%a tmp.txt
find "X_P1" tmp.txt > nul && move %%a xp1 || move %%a xp2
)
del tmp.txt
exit /b