CFFILE没有读取被服务器批处理文件操纵的文件?

时间:2013-06-26 14:06:36

标签: batch-file coldfusion coldfusion-10

服务器是Windows。

我正在尝试做的是创建一个批处理,它将运行一个程序,输出到临时文件,然后我将读取。我能够创建这个批处理,据我所知,一切正常,直到我回到使用cffile来读取'已更改'文件...在这种情况下,似乎没有任何改变。但是,如果我真的通过windows或ftp explorer打开文件,我可以看到它已被更改。

请参阅下面的示例代码:

<cfset path = "D:/tests/" />
<cfset tempfile_  = GetTempFile(path, "test_")>
<cfset tempfile_batch = getTempFile(path, "testBatch_")>

<cffile action="rename"
        destination="#replaceNocase(tempfile_batch, '.tmp', '.bat')#"
        source="#tempfile_batch#" />
<cfset tempfile_batch = replaceNocase(tempfile_batch, '.tmp', '.bat') />



<cfset batchContents = '' />
<cfsavecontent variable="batchContents">
    @echo off
    <cfoutput>
        echo "this is a test" > "#tempfile_#"
    </cfoutput>
    exit
</cfsaveContent>        



<cffile
    action="write"
    file="#tempfile_#"
    output='init text' />

<cffile
    action="write"
    file="#tempfile_batch#"
    output='#batchContents#' />

<cfexecute name="#tempfile_batch#" />


<cffile action="read" file="#tempfile_#" variable="foo">

<cfoutput>
fileName: #tempfile_# <br />

result is... 
#foo#
</cfoutput>

当我实际打开临时文件时,内容是“这是一个测试”,而#foo#是“初始文本”

任何想法为什么?

1 个答案:

答案 0 :(得分:1)

默认情况下,cfexecute会触发进程,但不会等待它完成。因此,您可能会在更新之前尝试读取该文件。在timeout电话中添加cfexecute即可解决问题。

  

超时 - ColdFusion等待衍生程序输出的时间长度(以秒为单位)。

     
      
  • 0(默认值):相当于非阻塞模式。
  •   
  • 非常高的价值:   相当于阻止模式。
  •