我们使用下面的代码来获取计算机的名称。
def new shared var cHost as char format "x(40)" no-undo.
INPUT THROUGH hostname NO-ECHO.
SET cHost.
INPUT CLOSE.
DISPLAY chost.
我们更新了计算机(Windows 10 - 1703)后,它不再有效。似乎 SET cHost 是失败的部分。我尝试过 IMPORT UNFORMATTED cHost ,但它不起作用。
PS:我可以使用 OS-GETENV(“COMPUTERNAME”)获取计算机名称,但我必须使用 INPUT THROUGH 语句来完成。
编辑:它似乎不仅是10.2A的问题,而是更普遍的问题。此外,它不仅与主机名相关,而且与所有控制台应用程序和 ms-dos命令相关。现在,我将尝试将 INPUT THROUGH 语句替换为另一个Progress命令(如果有),或尝试使用其他方法与现有控制台应用程序通信。
答案 0 :(得分:0)
我要做的第一件事就是验证“主机名”'命令仍在命令窗口中正常工作。
假设我会将你的代码段编码为:
INPUT THROUGH VALUE( "hostname" ).
IMPORT UNFORMATTED cHost.
INPUT CLOSE.
DISPLAY cHOST format "x(60)".
这可能会显示比#34更有用的错误消息;它不再有效"。
由于COMPUTERNAME符合您的需求,但您必须使用INPUT THROUGH出于一些非常神秘的原因,您也可以尝试:
INPUT THROUGH VALUE( "echo %COMPUTERNAME%" ).
IMPORT UNFORMATTED cHost.
INPUT CLOSE.
DISPLAY cHOST format "x(60)".
答案 1 :(得分:0)
似乎问题可能不仅限于Openedge版本10.我正在使用Progress / Openedge 8.3运行Windows 10 winver 1703设备进行开发,我无法再执行此操作。
def var a as char format "x(70)".
input through "echo %cd%" no-echo.
import unformatted a.
input close.
message a. pause.
使用progress / opensge 8.3在Windows Server 2012 R2上运行。
哪里不再有效,它只是在命中导入命令时退出程序。
答案 2 :(得分:0)
由于它似乎是一个错误,在有人提出更好的解决方案之前,这就是我改变代码的方式:
DEF VAR cHost AS CHAR FORMAT "x(40)" NO-UNDO.
OS-CREATE-DIR VALUE("c:\temp").
OS-COMMAND SILENT VALUE("hostname >c:\temp\hostname.txt").
INPUT FROM VALUE("c:\temp\hostname.txt").
IMPORT UNFORMATTED cHost.
INPUT CLOSE.
MESSAGE cHost.
此代码也可用于其他 ms-dos命令和控制台应用程序。
DEF VAR cHost AS CHAR FORMAT "x(40)" NO-UNDO.
OS-CREATE-DIR VALUE("c:\temp").
OS-COMMAND SILENT VALUE("ECHO %cd% >c:\temp\result.txt").
INPUT FROM VALUE("c:\temp\result.txt").
IMPORT UNFORMATTED cHost.
INPUT CLOSE.
MESSAGE cHost.
感谢您的帮助。