有人能检查一下代码并找出错误吗?我为此纠结了好久,但不知道哪里出了问题...我收到错误:
'-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。