使用SSIS压缩文件夹

3
我正在尝试在SSIS中压缩一个文件夹,源文件夹中有12个文件,我需要将该文件夹压缩。我可以成功压缩文件,但我的问题是文件夹。
我必须使用winzip创建压缩包。
有人可以指点我一个好的教程吗?我一直无法实现我找到的任何示例。
谢谢

你好@alex,感谢你的帮助!我尝试按照你的方法操作了。我完全按照你建议的方式进行了操作,但我的程序包只是成功地执行了,而没有压缩文件夹。请考虑我尝试的情况:sFolderCompressed --> F:\Archieve\test.zip,sFolderSource --> F:\Source\test。这些是我传递的值,并在脚本任务中将它们称为只读变量,就像你建议的那样。但是什么也没改变。请指出我哪里错了。 - Gnanaskandhan
尝试使用 sFolderCompressed --> F:\Archieve\test,不要使用 F:\Archieve\test.zip;希望这有所帮助。 - ɐlǝx
我做了一个更改......没有任何更改发生 @alex... - Gnanaskandhan
你是在本地运行命令还是在服务器上运行?可能你的Windows版本更加更新,不允许通过命令行进行压缩...我们必须寻找其他解决方案...很抱歉! - ɐlǝx
好的。谢谢 @alex - Gnanaskandhan
显示剩余2条评论
3个回答

4

添加一个脚本任务,您可以使用ZipFile(类)这里的参考资料,您必须在项目中引用System.IO.Compression.FileSystem程序集(.NET Framework 4.5)。

您需要将要压缩的文件夹和压缩后文件夹的名称作为ReadOnlyVariables提供给脚本任务(添加到ReadOnlyVariables选项卡中)

这两个变量必须在包的变量选项卡中定义(String类型),并且可以通过循环(例如,对于每个)动态更改。

我使用这两个变量:

sFolderCompressed - the folder '.zip' that you want to obtain eg. C:\folder1\result.zip 
sFolderSource - the source folder containing the files affected eg. C:\folder1\folder2

enter image description here

脚本是用c#编写的,选择脚本语言:Microsoft Visual C#。

enter image description here

这是要添加到Main方法中的代码:

using System.IO.Compression;

    public void Main()
    {
        try
        {
            string zipPath = (string)Dts.Variables["User::sFolderCompressed"].Value;
            string startPath = (string)Dts.Variables["User::sFolderSource"].Value;


            ZipFile.CreateFromDirectory(startPath, zipPath);
        }
        catch (Exception objException)
        {
            Dts.TaskResult = (int)ScriptResults.Failure;
            // Log the exception
        }
        Dts.TaskResult = (int)ScriptResults.Success;
    }

我希望能够帮助。


@ɐlǝx。太好了。它对我帮助很大。 - vikrant rana
你好,我正在使用VS 2010,当我尝试使用你的方法时出现了一个错误,我已经使用了命名空间:Error 1 The name 'ZipFile' does not exist in the current context。 - ARAZI
1
嗨,你需要在项目中添加程序集 System.IO.Compression.FileSystem;右键单击“引用”->“添加引用”->“程序集”->“框架”->勾选 System.IO.Compression.FileSystem 然后点击“确定”(你可能会在引用列表中看到该项)。 - ɐlǝx

0

1
谢谢。但是在我的用户中,他们只使用WinZip,我没有使用7-Zip的权限...请与WinZip分享解决方案。 - Gnanaskandhan

0

在bat文件中编写以下内容...

"C:\Program Files\WinZip\WINZIP64.EXE" -a "C:\Desktop\destination_folder\Sample.zip" "C:\Desktop\Sample"

在执行进程任务中:

在执行进程任务中提及bat文件的位置-->进程-->可执行文件。

它可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接