我有一个输出csv文件的SSIS包,我想要做的是在生成csv之前查看目标文件夹,如果已经存在(我每天生成它们),然后将其移动到存档文件夹
我的文件名结构是“NAME_YYMMDD_HHMM.csv”我不确定如何查找文件,因为日期和时间总是不同的。我已经为文件名“NAME _ * _。csv创建了一个变量,但不确定如何将id添加到文件系统任务中?如果文件不存在id就像它只是转到包中的下一步,如果它存在然后将文件移动到存档文件夹
答案 0 :(得分:2)
您应该使用脚本任务来执行此操作:
在字符串文件中使用一个变量,它保存YYMMDD中的值,因为在创建运行时HHMM无法获取。
可以找到日期格式here
使用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);
}
}
}