批处理文件 - 仅转换新文件

Batch file - convert only new files

我的 PDF 目录越来越多,我正在使用 ImageMagick 将其转换为 JPG。随着它变大,每次都重新转换所有文件是没有意义的。

这是我的命令:

FOR /R %%a IN (*.pdf) DO magick -density 120 "%%~a" -quality 90 "%%~dpna.jpg"

如何构造我的批处理文件或 ImageMagick 命令以仅处理尚无匹配 JPG 的 PDF?

一个简单的解决方案是使用命令 IF 检查当前 *.pdf 文件是否存在 *.jpg:

for /R %%I in (*.pdf) do if not exist "%%~dpnI.jpg" magick -density 120 "%%I" -quality 90 "%%~dpnI.jpg"

另一种可能性是使用文件的存档属性,如果在目录中创建或修改文件,该属性会自动设置。

for /F "delims=" %%I in ('dir *.pdf /AA-D-H /B /S 2^>nul') do (
    %SystemRoot%\System32\attrib.exe -a "%%I"
    magick -density 120 "%%I" -quality 90 "%%~dpnI.jpg"
)

使用此解决方案的主要优点是 PDF 文件一旦转换为 JPEG 文件就会被覆盖,为更新的 PDF 文件再次转换为 JPEG。

要了解使用的命令及其工作原理,请打开命令提示符 window,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。

  • attrib /?
  • dir /?
  • for /?
  • if /?