Пакет ps2pdf не удается - PullRequest
       6

Пакет ps2pdf не удается

0 голосов
/ 30 апреля 2020

Я до сих пор не решил, почему этот код, который корректно проходит по всем подпапкам, ищет jpg-файлы для преобразования в pdf-файлы и сжимает их, но завершает работу перед выполнением любой команды после заключительного ')'. Это определенно связано с ps2pdf, но я не могу думать о том, что может измениться ps2pdf. Есть идеи?

@echo on
set records="C:\Users\john\Documents\0 BDHS Digitised records\Awaiting processing\"
cd %records%

setlocal enabledelayedexpansion
for /r . %%G in (.) do ( Pushd %%G
If %errorlevel% NEQ 0 goto:eof
rem merge jpgs to PDF
jpeg2pdf.exe *.jpg -o "%%~nG".pdf
set fname=%%G
ps2pdf -dPDFSETTINGS#/ebook "%%~nG".pdf "%%~nG"compressed.pdf
popd )

echo Ended
pause

1 Ответ

0 голосов
/ 30 апреля 2020

Вот пример вашего скрипта с обязательным Call для вашего ps2pdf.bat файла.

Перед запуском, пожалуйста, замените правильные полные пути для вашей исполняемой утилиты, jpeg2pdf.exe, (строка 14) и сценарий ps2pdf.bat, (строка 15) . Не стоит полагаться на изменяемые переменные реестра или среды, поэтому я советую указывать их полные пути. Если эти два файла всегда будут находиться в каталоге этого пакетного файла или относительно него, не стесняйтесь использовать %~dp0 для обозначения этих путей.

@Echo Off
SetLocal DisableDelayedExpansion
Set "records=%UserProfile%\Documents\0 BDHS Digitised records\Awaiting processing"

Set "fname="
If Exist "%records%\" (
    For /R "%records%" %%G In (*.jpg) Do (
        SetLocal EnableDelayedExpansion
        If Not "!fname!" == "%%~dpG" (
            EndLocal
            Set "fname=%%~dpG"
            For %%H In ("%%~dpG.") Do (
                Rem Merge JPGs to PDF
                "P:\athTo\EXE\jpeg2pdf.exe" "%%~dpG*.jpg" -o "%%~dpG%%~nxH.pdf"
                Call "P:\athTo\ps2pdf.bat" -dPDFSETTINGS#/ebook "%%~dpG%%~nxH.pdf" "%%~dpG%%~nxHcompressed.pdf"
            )
        ) Else EndLocal
    )
    Echo Ended.
) Else Echo Directory %records% dos not exist.
Pause

В приведенном выше примере сделано больше эффективный, повторяющийся только через каталоги, содержащие файлы с расширениями .jpg.

Сценарий, однако, не входит в каталоги, использующие PushD и PopD, как это сделал ваш. Хотя это может быть небольшое улучшение эффективности, это может привести к возникновению другой проблемы. Поскольку я не знаю ваших утилит, если они принимают только командные строки ограниченной длины или пути, эта версия может задохнуться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...