Вот пример вашего скрипта с обязательным 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
, как это сделал ваш. Хотя это может быть небольшое улучшение эффективности, это может привести к возникновению другой проблемы. Поскольку я не знаю ваших утилит, если они принимают только командные строки ограниченной длины или пути, эта версия может задохнуться.