如何使用 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