我在浏览器里看到的只是一个空白屏幕。如果我不使用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>发布于 2018-08-10 01:56:14
您需要在cfexecute上指定一个timeout,以便按顺序获得有效的结果/错误。
默认的timeout是0,它是非阻塞的,这意味着您的命令是异步执行的。这意味着你不会立即得到结果。
我不确定,对于Adobe来说,“非阻塞”是指完全忽略variable和error属性,还是最终设置它们。如果你很好奇,你可以抛出一个cfsleep来找出答案,只是请不要在生产环境中使用。:)
发布于 2018-08-09 13:47:08
您必须指定应用程序到execute.On窗口的绝对路径,指定一个扩展名,例如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>我希望它能帮助你。
https://stackoverflow.com/questions/51757971
复制相似问题