1

我在浏览器中得到的只是一个空白屏幕。如果我不使用 IsDefined,我会在页面中收到一条错误消息,指出该变量不存在。

如果我拼错了一个命令(例如:使用 /bin/bsh 而不是 /bin/bash),我会收到一个异常,指出 CF 找不到该程序。所以它似乎正在工作。我只是想检查它是否真的在运行。

这是我的代码:

------
<cfexecute name="/bin/ls" arguments=" -la /" errorVariable="error" variable="result"></cfexecute>
<cfif IsDefined("result")>
    <cfdump var="#result#">
</cfif>
<cfif IsDefined("error")>
    <cfdump var="#error#">
</cfif>

<cfexecute name="/bin/bash" arguments=" -c '/bin/ls -la /'" errorVariable="error" variable="result"></cfexecute>
<cfif IsDefined("result")>
    <cfdump var="#result#">
</cfif>
<cfif IsDefined("error")>
    <cfdump var="#error#">
</cfif>
4

2 回答 2

2

您需要指定一个timeoutoncfexecute才能按顺序获得有效的结果/错误。

默认timeout0,它是非阻塞的,这意味着你的命令是异步执行的。这意味着您不会立即得到结果。

我不确定对于 Adob​​e,“非阻塞”是否意味着完全忽略或最终设置variableand属性。error如果你好奇,你可以扔进cfsleep去找出来,只是请不要在生产中。:)

于 2018-08-09T17:56:14.317 回答
0

您必须指定要执行的应用程序的绝对路径。在 Windows 上,指定扩展名,例如 C:\myapp.exe。

我已经使用 cfexecute 运行了我的 sqlCMD,这里我传递了一个 MS sql 服务器的绝对路径。

<cfexecute name="C:\Program Files\Microsoft SQL Server2016\Client SDK\ODBC\130\Tools\Binn\SQLCMD.EXE" arguments=" -S localhost -U sa -P sqlPwd@12## -i" timeout="0" errorFile="#logsDir#/#TableSqls.name#_error.txt">

</cfexecute>

我希望它会帮助你。

于 2018-08-09T05:47:07.950 回答