【问题标题】:How to run .exe/.bat file with INPUT/OUTPUT in Progress 4GL如何使用正在进行的 INPUT/OUTPUT 运行 .exe/.bat 文件 4GL
【发布时间】:2021-05-30 19:38:16
【问题描述】:

我尝试在 Progress4GL 中通过 wkhtmltopdf.exe 创建 PDF 文件。我写了一个程序,它下载一个 html 文件作为 INPUT。

procedure downloadhtml:

    define input parameter i-benutzer as character  no-undo.

    
    define variable zw-path         as character no-undo.
    define variable h-uhrzeit       as character no-undo.
    define variable h-text          as character no-undo.    
    

    h-uhrzeit = string(time, "HH:MM:SS").
    h-uhrzeit = replace(h-uhrzeit, ":", "."). 
   
    h-text = '<div style="color:red;">I am a html file</div>'.
   
    
    find database.table
         where database.table.man     = "xxx"
         and   database.table.krg     = "X-2540.w"
         and   database.table.user    = "_PPS"
         and   database.table.opzt    = "_PPN"
         no-lock no-error.
    if available database.table then do:
       zw-path = table.field.
    end.

 
    OUTPUT TO VALUE(zw-path + "Name_" + string(today,"99.99.9999") + "_" + h-uhrzeit + "_" + i-benutzer + ".html").
  
    
        put unformatted h-text skip.
   
    
    output close.

end procedure.

它将html文件下载到这个目录:

K:\K11\WEB\PDF\Name_01.03.2021_09.17.25_xx.html

wkthmltopdf.exe 有 1 个输入和 1 个输出目录。 CMD 控制台中的结构如下所示 --> :: [.exe] [INPUT DIRECTORY] [OUTPUT DIRECTORY]

如果我使用这些命令手动运行 cmd 控制台,它会完美运行

cd C:\Program Files (x86)\wkhtmltopdf\
wkhtmltopdf.exe K:\K11\WEB\PDF\Name_01.03.2021_09.17.25_xx.html K:\K11\WEB\PDF\Name_01.03.2021_09.17.25_xx.pdf

我的问题是:如何运行具有动态(名称取决于日期和时间)INPUT OUTPUT 变量的 .exe 文件?

我发现了一个在progress4GL中运行.exe文件的命令

os-command(wkhtmltopdf.exe) 

但是如何将输入和输出变量/目录放入 .exe 文件 in progress4gl?

【问题讨论】:

    标签: batch-file exe wkhtmltopdf openedge progress-4gl


    【解决方案1】:

    类似

        OS-COMMAND VALUE (SUBSTITUTE ("cd C:\Program Files (x86)\wkhtmltopdf\wkhtmltopdf.exe K:\K11\WEB\PDF\Name_&1.&2.&3.html",
                                      DAY (TODAY),
                                      MONTH (TODAY),
                                      YEAR (TODAY))) .
                 
    

    【讨论】:

    • 你为什么在这里使用 VALUE ?出于某种原因,当我使用 os-command 值时它不起作用,但 os-command silent 效果很好。 ( 当地的 )。我使用 silent 因为我希望它在后台运行,所以我不想在它执行时看到控制台窗口。以这种方式使用silent是真的吗?
    • 我使用 VALUE 来支持运行时评估的表达式。如果没有 VALUE,SUBSTITUTE 函数将被解释为命令,而不是返回 OS 命令的表达式。您可以结合 SILENT 和 VALUE:OS-COMMAND SILENT VALUE (...)
    【解决方案2】:

    很久很久没有取得任何进展了,所以我不记得os-command 是如何工作的,但我会尝试

    os-command("C:\Program Files (x86)\wkhtmltopdf\wkhtmltopdf.exe" K:\K11\WEB\PDF\Name_01.03.2021_09.17.25_xx.html K:\K11\WEB\PDF\Name_01.03.2021_09.17.25_xx.pdf)
    

    理论:引用完整的可执行文件名应该被解释为单个标记。 可能 x86) 中的 ) 需要用 ^ 转义,即。 x86^)

    【讨论】:

    • 它在本地工作,以单引号开头,然后每个参数双引号 -->os-command (' "C:\Program Files (x86)\wkhtmltopdf\wkhtmltopdf.exe" "K:\K11\WEB\PDF\Name_01.03.2021_09.17.25_xx.html" "K:\K11\WEB\PDF\Name_01.03.2021_09.17.25_xx.pdf" ')
    • 但是如果我使用变量而不是常量,例如01.03.202109.17.25 ----> x="01.03.2021" y="09.17.25" os-command(' "C:\Program Files (x86)\wkhtmltopdf\wkhtmltopdf.exe" "K:\K11\WEB\PDF\Name_' x '_' y '_xx.html" "K:\K11\WEB\PDF\Name_' x '_' y '_xx.pdf" '),为什么这不起作用
    • 这是另一个替代选项,但这个也不起作用:OS-COMMAND SILENT SUBSTITUTE (' "C:\Program Files (x86)\wkhtmltopdf\wkhtmltopdf.exe" "K:\K11\WEB\PDF\Name_&amp;1_&amp;2_&amp;3.html" "K:\K11\WEB\PDF\Name_&amp;1_&amp;2_&amp;3.pdf" ', "01.03.2021", "14.09.30", "xx")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    相关资源
    最近更新 更多