我开发了一个解决方案,其中PL / SQL Oracle API生成需要打印(参数1)的PDF文件名(包括完整文件路径),然后使用DBMS_SCHEDULER传递该文件名和打印机名称(参数2)到以下批处理文件:
"C:\Program Files (x86)\Adobe\Acrobat 4.0\Reader\AcroRd32.exe" /t %1 %2
但是,有些情况下传递给批处理文件的文件名不存在。由于该文件不存在,Adobe继续运行(在后台)。这会阻止API再次执行,直到某人手动结束Windows进程,因为DBMS作业已连接到Adobe实例。
不幸的是(除非在Oracle中有办法检查文件是否存在于目录中)我无法在Oracle端解决此问题,因此我需要在Windows端解决它。
因此,是否有任何其他逻辑可以添加到批处理文件或任何其他将验证文件是否存在的脚本中,如果文件不存在则结束该过程。解决方案必须高效,因为PDF文件的打印是时间敏感的。
如果有人为此问题确实有Oracle端解决方案,那么我很乐意提供相关代码。
提前致谢。
答案 0 :(得分:0)
不启动Acrobat比尝试关闭它更容易。您可以使用IF EXIST
command:
@IF EXIST %1 (
"C:\Program Files (x86)\Adobe\Acrobat 4.0\Reader\AcroRd32.exe" /t %1 %2
) ELSE (
REM optionally report error?
)
有一些方法可以从Oracle检查文件,但这可能更简单,因为您已有批处理文件,除非您想在此过程的早期测试并报告错误。