【问题标题】:Can I use cffile to copy multiple files?我可以使用 cffile 复制多个文件吗?
【发布时间】:2019-07-17 16:44:11
【问题描述】:

在 ColdFusion 中,我正在使用 <cfdirectory 设置一个新目录。然后我需要将几个文件从一个目录复制到新目录,保持相同的文件名。我可以使用循环来执行此操作,但我想知道 cffile 中是否有任何函数可以让我一次复制多个文件。

繁琐——reploc 和 newloc 是源目录和目标目录:

<cfdirectory
      directory  = 'newloc'
      action     = 'create'   
      mode       = 777>

<cfoutput>
<cfset extrep = ExpandPath('reploc')>
<cfset extnew = ExpandPath('newloc')>

 <cfset flist = 'a.cfm', 'b.cfm'>
 <cfloop list = '#flist#' index = 'item'>
   <cffile 
       action = "copy" 
       source = "#extrep#/#item#"
       destination = "#extnew#/#item#"
       mode = "766" >
 </cfloop>
 </cfoutput>

我正好有四个文件要复制。它们是固定的,不依赖于任何用户输入。

我希望&lt;cffile 会支持复制多个文件,但我找不到任何可以说它的东西。任何人都可以建议一种更简化的方法来设置此目录及其四个文件吗?

【问题讨论】:

  • 这是一次性的还是常规的?这是什么类型的文件系统?
  • 间歇性的。它只是一个通用的 Linux 文件系统。

标签: coldfusion cffile


【解决方案1】:

不。顾名思义,cffile 只对单个文件进行操作。

但是,您可以将DirectoryCopy() 或&lt;cfdirectory action="copy"&gt; 与文件filter 一起使用。下面的示例将文件“a.cfm”和“b.cfm”复制到目标文件夹。

CFScript/CFML:

 DirectoryCopy("c:\path\source", "c:\path\target", false, "a.cfm|b.cfm")

CFML:

<cfdirectory action="copy"
    directory="c:\path\source"
    destination="c:\path\target"
    filter="a.cfm|b.cfm">

【讨论】:

  • 很快就会试试这个。
  • 很高兴它有帮助。原来那里实际上是一个 DirectoryCopy 函数,它只是从一个文档中省略了。它做同样的事情,而且 IMO 比使用 &lt;cfdirectory&gt; 更时尚。查看更新的答案。
猜你喜欢
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 2021-01-04
  • 2013-10-09
  • 1970-01-01
  • 2021-04-04
  • 2012-04-12
  • 2020-03-10
相关资源
最近更新 更多