Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 在文件夹之间复制文件;使用csv/excel中标识的文件前缀_File_Ssis_Copy - Fatal编程技术网

File 在文件夹之间复制文件;使用csv/excel中标识的文件前缀

File 在文件夹之间复制文件;使用csv/excel中标识的文件前缀,file,ssis,copy,File,Ssis,Copy,我正在执行此工具的第一步,希望将一组excel文件从一个文件夹复制到另一个文件夹。 源文件夹有一组后缀为YYYYMM的文件,我必须只复制所需月份的文件(查询到BD的因变量) 源文件夹包含多个带有“prefix_name_YYYYMM.xlsx”的excel文件名,这些前缀可以在txt文件中使用,也可以在excel中使用(这更容易实现!) 我读过一些关于文件夹中所有文件的“Foreach循环容器”和“文件系统任务”的文章 但我无法想象如何获得各种文件名/前缀来为循环提供信息,并获得所有文件的前缀x

我正在执行此工具的第一步,希望将一组excel文件从一个文件夹复制到另一个文件夹。 源文件夹有一组后缀为YYYYMM的文件,我必须只复制所需月份的文件(查询到BD的因变量)

源文件夹包含多个带有“prefix_name_YYYYMM.xlsx”的excel文件名,这些前缀可以在txt文件中使用,也可以在excel中使用(这更容易实现!)

我读过一些关于文件夹中所有文件的“Foreach循环容器”和“文件系统任务”的文章

但我无法想象如何获得各种文件名/前缀来为循环提供信息,并获得所有文件的前缀x1_YYYYMM*。XLSx


注意:客户机不希望用“前缀文件列表”填充sql server表。如果要获取各种文件名/前缀以提供循环,请在脚本任务中使用c代码

   string SourceDirectory = Dts.Variables["User::varSourceFolder"].Value.ToString();
                string[] fileEntries = Directory.GetFiles(SourceDirectory);

foreach (string fileName in fileEntries)
                {.....}

这可以通过在Foreach循环中使用文件系统任务来实现。以下步骤进一步概述了这一点。在文件系统任务中需要注意的几点是,您需要将
DelayValidation
设置为true,如果您打算复制新文件以替换旧文件,则
OverwriteDestination
也需要设置为true

  • 向控制流添加Foreach循环,并将其配置为Foreach文件枚举器
  • 在“集合”窗格上选择源文件夹
  • 对于“文件”字段,使用前缀
    *
    获取具有此前缀的所有文件。例如,前缀_name_YYYYMM*.xlsx
  • 在变量映射窗格中,添加字符串变量,并将其设置为索引0
  • 在Foreach循环中,使用copy File操作添加一个文件系统任务。对于源连接,将
    IsSourcePathVariable
    设置为true,然后添加在Foreach循环映射中使用的与
    SourceVariable相同的变量。

有一个foreach循环,专门设计用于循环目录中的文件。您能把问题集中一点吗?你想做的事情有好几个部分,不清楚你不知道该怎么做。您不确定如何读取包含前缀的文本文件吗?