SSIS脚本删除和创建文件夹

问题描述 投票:2回答:1

我有一个运行,并创建了一堆每个文件夹的文件的循环。该文件夹是基于次数范围的唯一命名的,这样他们就可以改变。而该文件夹必须存在,否则循环崩溃。

我想创建一个脚本,将删除所有子文件夹和文件中的每个子文件夹,从根目录。即

Root = C:\Output\
SubFolder = C:\Output\T1-500\
SubFolder = C:\Output\T501-1010\
SubFolder = C:\Output\T1011-3076\

然后,有需要在运行它创建文件夹。我试过了:

public void Main()
    {
        // Deletes subfolders and files in the main folder
        EmptyFolder(Dts.Variables["User::FolderName"]);

        // Creates new folder on the fly
        if (Directory.Exists(Dts.Variables["User::FolderName"].Value = 0))
            Dts.TaskResult = Directory.CreateDirectory(Dts.Variables["User::FolderName"]);
    }


    private void EmptyFolder(DirectoryInfo directoryInfo)
    {
        foreach (FileInfo file in directoryInfo.GetFiles())
        {
            file.Delete();
        }

        foreach (DirectoryInfo subfolder in directoryInfo.GetDirectories())
        {
            EmptyFolder(subfolder);
        }
    }

它似乎没有拿起我的包级别变量,不会让我再补充新的。 enter image description here

我得到以下时,我尝试使用我的文件夹中的变量:enter image description here

c# sql-server ssis etl
1个回答
4
投票

该错误意味着你传递了错误的数据类型。尝试这个。

取而代之的是:

EmptyFolder(Dts.Variables["User::FolderName"]);

用这个:

String folderName = (string)Dts.Variables["User::FolderName"].Value;
DirectoryInfo di = new DirectoryInfo(folderName);
EmptyFolder(di);

有可能是把所有的它在同一行,但与起动方式。

正如在下面的评论中提到,如果你只是使用(string)属性Value投可能不是必要的 - 也请尝试。

你可能还需要使用新的folderName字符串变量在你的代码的其他部分。

正如我在评论中提到的,你也可以运行这样的命令行删除的文件夹和所有子文件夹

RD <yourfolder> /S /Q
© www.soinside.com 2019 - 2024. All rights reserved.