我有一个运行,并创建了一堆每个文件夹的文件的循环。该文件夹是基于次数范围的唯一命名的,这样他们就可以改变。而该文件夹必须存在,否则循环崩溃。
我想创建一个脚本,将删除所有子文件夹和文件中的每个子文件夹,从根目录。即
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);
}
}
该错误意味着你传递了错误的数据类型。尝试这个。
取而代之的是:
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