gpt4 book ai didi

pipe - 如何在 powerbuilder 的 run () 命令中组合 "|"字符,以便读取 txt 文件作为文件(pdf)的元数据输出?

转载 作者:行者123 更新时间:2023-12-02 07:56:34 25 4
gpt4 key购买 nike

您能否告诉我如何在 powerbuilder run 命令中使用“pdftk mypdf.pdf dump data | findstr NumberOfPages”并使用以下代码将此元数据保存在文件中:

string ls_runinput, ls_outputfile

ls_outputfile = "c:\test.txt"
ls_runinput = "c:\pdftk\pdftk.exe mypdf.pdf dump_data | findstr NumberOfPages >"+ls_outputfile
Run(ls_runinput,Minimized!)

li_fileopen = FileOpen(ls_outputfile ,TextMode!, Read!, Shared!)

问题是执行了 Run 命令,创建了文件,但 fileopen 返回 -1 ?是不是run无法识别“|”?特点?您应该建议我怎样编写正确的代码?我正在使用 powerbuilder 10.5.2,非常感谢

最佳答案

Powerbuilder 不会等待 Run() 调用的进程完成。 Run() 的返回值仅基于其是否成功调用外部进程,而不取决于外部进程接下来执行的操作。

这意味着 pdftk 很可能已正确完成,但您太早尝试访问输出。当它完成后,你必须找到一些锻炼的方法。也许从批处理文件中调用它,该批处理文件在完成之前创建另一个文件,然后在 Powerbuilder 中检查该文件是否存在。

或者,您可以使用不同的方法来调用外部进程。这是通过 Windows Scripting Host 调用外部进程的示例:

OleObject wsh

CONSTANT integer MAXIMIZED = 3
CONSTANT integer MINIMIZED = 2
CONSTANT integer NORMAL = 1
CONSTANT integer HIDE = 0
CONSTANT boolean WAIT = TRUE
CONSTANT boolean NOWAIT = FALSE

wsh = CREATE OleObject
li_rc = wsh.ConnectToNewObject( "WScript.Shell" )
li_rc = wsh.Run(ls_runinput, HIDE, TRUE)

(代码示例抄自 Stuart Dalby's site )。

如果您仍然无法使其工作,最好的办法是将其拆分出来,并验证您是否可以首先对预先存在的文件执行 FileOpen ,然后在外部验证输出是否正确Run() 调用的进程的正确性(最终)。

仅供引用,|字符不是特殊字符,不需要在字符串中转义。

关于pipe - 如何在 powerbuilder 的 run () 命令中组合 "|"字符,以便读取 txt 文件作为文件(pdf)的元数据输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2552283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com