PDF 文件压缩 Ghostscript

PDF 文件压缩 Ghostscript

有人能检查一下代码并找出错误吗?我为此纠结了好久,但不知道哪里出了问题...我收到错误:

'-sDEVICE' is not recognized as an internal or external command,
operable program or batch file.

这是我的代码:

@echo off

set "path=C:\cygwin64\bin;%path%"

rem directories to scan for files
set "filesDir[0]=.\MAGAZINES\"

rem extension of files to be scanned
set "ext=pdf"

rem file prefix for new files (if they should be created)
set "filepre="

rem loop over all directories defined in filesDir array
for /f "tokens=2 delims==" %%d in ('set filesDir[') do (
   if exist "%%~d" (
      pushd "%%~d"
      rem loop over all files in all (sub)directories with given extension
      for /f "delims=*" %%f in ('dir "*.%ext%" /b /s /a:-d') do (
            %ghostscript% -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile="%TEMP%\%%~nxf" "%%~f"
            for %%t in ("%TEMP%\%%~nxf") do ( set "newSize=%%~zt" )
            for %%t in ("%%~f") do ( set "oldSize=%%~zt" )
            if [!newSize!] LSS [!oldSize!] (
               rem new file is smaller --> overwrite
               move /y "%TEMP%\%%~nxf" "%%~f"
            ) else (
               rem new file is greater --> delete it of the temp dir
               del "%TEMP%\%%~nxf"
            )
         )
      popd
   )
)

pause

答案1

听起来好像环境变量“ghostscript”没有设置。

尝试命令

set ghostscript

在 CMD 终端中查看它显示了什么。

如果显示“环境变量 ghostscript 未定义”,则问题就出在这里。它应该指向 ghostscript 可执行文件(如果路径中有空格,则包括引号,因为您%ghostscript%在脚本中使用了未加引号的引号)。

如果 Ghostscript 可执行文件位于 中%path%,则ghostscript环境变量不需要包含路径,只需包含可执行文件的名称。可执行文件的名称可以是 GSWIN32C.EXE(32 位版本)或 GSWIN64C.EXE(64 位版本)。

如果 Ghostscript 可执行文件不在 中%path%,则ghostscript环境变量需要包含路径。在我的计算机上,完整路径是“C:\Program Files\gs\gs9.52\bin\gswin64.exe”,因此在我的计算机上,我将ghostscript环境变量设置为

 "C:\Program Files\gs\gs9.52\bin\gswin64.exe" 

包括引文让你的脚本正常工作。

当然,.exe的具体路径和名称取决于您如何安装Ghostscript。

相关内容