我有一个SSIS包,它输出一个csv文件,我想要做的是在生成csv之前查看目标文件夹,如果已经存在这个文件夹(我每天都会生成它们),然后将它移到一个归档文件夹中。
我的文件名结构是"NAME_YYMMDD_HHMM.csv“,我不知道如何查找文件,因为日期和时间总是不同的。我已经为文件名"NAME_*_.csv“创建了一个变量,但不确定如何将其添加到文件系统任务中??如果文件不存在id,则如果文件存在,只需移到包中的下一步,那么将文件移动到存档文件夹。
发布于 2017-12-05 11:53:02
您应该使用一个脚本任务来完成这个任务:
在字符串文件中使用一个变量,它保存来自YYMMDD的值,因为在创建运行时HHMM无法获得它。
日期格式可以找到这里
使用System.IO命名空间;
string filepath = @"D:\new";
string file = "test_171205_1010.txt";
string fullpath = filepath + @"\" + file;
string newpath = @"D:\arch\";
string newfullpath = newpath + file;
if(
File.Exists(fullpath))
{
File.Move(fullpath, newfullpath);
}更新
如果你想要使用今天的日期,你可以这样做,在下面,我查找所有的文件,并移动他们。这取决于你的逻辑。
string txtFile = null;
string txtMoveFile = null;
string date = DateTime.Now.ToString("yyMMdd");
string filepath = @"D:\new";
/*USE THIS LINE IF YOU WANNA USE VARIABLE FROM FOREACH LOOP CONTAINER*/
string file = Dts.Variables["User::name"].Value.ToString() +"_*_*.txt";
//string file = "test_"+date+"_*.txt";
string[] allfilesfromcurrentdate = Directory.GetFiles(filepath, file);
string fullpath = filepath + @"\" + file;
string newpath = @"D:\arch\";
string newfullpath = newpath + file;
foreach(string fileName in allfilesfromcurrentdate)
{
if(fileName.Contains("test_"+date))
{
txtFile = fileName;
txtMoveFile = txtFile.Replace("new", "arch");
if(File.Exists(txtFile))
{
File.Move(txtFile, txtMoveFile);
}
}
}https://stackoverflow.com/questions/47650544
复制相似问题