我在浏览器中得到的只是一个空白屏幕。如果我不使用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>
答案 0 :(得分:2)
您需要在cfexecute
上指定timeout
,以便顺序获取有效的结果/错误。
默认timeout
是0
,它是非阻塞的,这意味着您的命令是异步执行的。这意味着您不会立即得到结果。
对于Adobe,我不确定“非阻塞”是指variable
和error
属性是被完全忽略还是最终被设置。如果您好奇,可以扔cfsleep
并找出来,只是请不要投入生产。 :)
答案 1 :(得分: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>
希望对您有帮助。