Home | Feedback | Login

Backup Specific Files in Same Directory as Source

#region Help:  Introduction to the script task

/* The Script Task allows you to perform virtually any operation that can be accomplished in

 * a .Net application within the context of an Integration Services control flow. 

 * 

 * Expand the other regions which have "Help" prefixes for examples of specific ways to use

 * Integration Services features within this script task. */

#endregion

 

 

#region Namespaces

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Data.SqlClient;

using System.Collections;

using System.Configuration;

using System.Data;

using System.Web;

using System.Net;

using System.Net.Mail;

using System.Text;

using System.Data.SqlClient;

using System.Data.Odbc;

using System.Data.OleDb;

using System.IO;

using System.Runtime.InteropServices;

using BOOL = System.Boolean;

using DWORD = System.UInt32;

using LPWSTR = System.String;

using NET_API_STATUS = System.UInt32;

using System.Text;

using System.Windows.Forms;

using System.Management;

#endregion

 

namespace ST_9103e95c542745febe6850042b289e8f

{

    /// <summary>

    /// ScriptMain is the entry point class of the script.  Do not change the name, attributes,

    /// or parent of this class.

    /// </summary>

[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]

public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase

{

        #region Help:  Using Integration Services variables and parameters in a script

        /* To use a variable in this script, first ensure that the variable has been added to 

         * either the list contained in the ReadOnlyVariables property or the list contained in 

         * the ReadWriteVariables property of this script task, according to whether or not your

         * code needs to write to the variable.  To add the variable, save this script, close this instance of

         * Visual Studio, and update the ReadOnlyVariables and 

         * ReadWriteVariables properties in the Script Transformation Editor window.

         * To use a parameter in this script, follow the same steps. Parameters are always read-only.

         * 

         * Example of reading from a variable:

         *  DateTime startTime = (DateTime) Dts.Variables["System::StartTime"].Value;

         * 

         * Example of writing to a variable:

         *  Dts.Variables["User::myStringVariable"].Value = "new value";

         * 

         * Example of reading from a package parameter:

         *  int batchId = (int) Dts.Variables["$Package::batchId"].Value;

         *  

         * Example of reading from a project parameter:

         *  int batchId = (int) Dts.Variables["$Project::batchId"].Value;

         * 

         * Example of reading from a sensitive project parameter:

         *  int batchId = (int) Dts.Variables["$Project::batchId"].GetSensitiveValue();

         * */

 

        #endregion

 

        #region Help:  Firing Integration Services events from a script

        /* This script task can fire events for logging purposes.

         * 

         * Example of firing an error event:

         *  Dts.Events.FireError(18, "Process Values", "Bad value", "", 0);

         * 

         * Example of firing an information event:

         *  Dts.Events.FireInformation(3, "Process Values", "Processing has started", "", 0, ref fireAgain)

         * 

         * Example of firing a warning event:

         *  Dts.Events.FireWarning(14, "Process Values", "No values received for input", "", 0);

         * */

        #endregion

 

        #region Help:  Using Integration Services connection managers in a script

        /* Some types of connection managers can be used in this script task.  See the topic 

         * "Working with Connection Managers Programatically" for details.

         * 

         * Example of using an ADO.Net connection manager:

         *  object rawConnection = Dts.Connections["Sales DB"].AcquireConnection(Dts.Transaction);

         *  SqlConnection myADONETConnection = (SqlConnection)rawConnection;

         *  //Use the connection in some code here, then release the connection

         *  Dts.Connections["Sales DB"].ReleaseConnection(rawConnection);

         *

         * Example of using a File connection manager

         *  object rawConnection = Dts.Connections["Prices.zip"].AcquireConnection(Dts.Transaction);

         *  string filePath = (string)rawConnection;

         *  //Use the connection in some code here, then release the connection

         *  Dts.Connections["Prices.zip"].ReleaseConnection(rawConnection);

         * */

        #endregion

 

 

/// <summary>

        /// This method is called when this script task executes in the control flow.

        /// Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.

        /// To open Help, press F1.

        /// </summary>

        public void Main()

        {

           

                    try

                    {

                        string SourceRoot = Dts.Variables["User::SourceRoot"].Value.ToString();

                        string DestinationRoot = Dts.Variables["User::DestinationRoot"].Value.ToString();

                        string FileType = Dts.Variables["User::FileType"].Value.ToString();

 

                        //MessageBox.Show(SourceRoot + " " + FileType + " " + DestinationRoot);

 

                        string[] sDirFiles = System.IO.Directory.GetFiles(SourceRoot);

 

                        if (sDirFiles.Length > 0)

                        {

                            foreach (string file in sDirFiles)

                            {

                                var SourceDirName = new DirectoryInfo(file).FullName;

 

                                //MessageBox.Show(SourceDirName);

 

                                int pos = SourceDirName.LastIndexOf(@"\") + 1;

 

                                string oldDir = SourceDirName.Substring(0, pos - 1);

                                string newDir = SourceDirName.Substring(0,pos-1).Replace(SourceRoot, DestinationRoot);

 

                                //MessageBox.Show(oldDir);

                                //MessageBox.Show(newDir);

 

 

                                if (!System.IO.Directory.Exists(newDir.ToString()))

                                {

                                    System.IO.Directory.CreateDirectory(newDir.ToString());

                                }                              

 

                                DirectoryCopy(oldDir, newDir, FileType, true);

                            }

                        }

                        else

                          MessageBox.Show("not found");

 

                        

                    }

                    catch (Exception e)

                    {

                        MessageBox.Show(e.Message);

                    }

                   

                

            

            Dts.TaskResult = (int)ScriptResults.Success;

        }

 

      

        private static void DirectoryCopy(string sourceDirName, string destDirName, string fileEx, bool copySubDirs)

        {

            // Get the subdirectories for the specified directory.

            DirectoryInfo dir = new DirectoryInfo(sourceDirName);

 

            if (!dir.Exists)

            {                

                MessageBox.Show("Source directory does not exist or could not be found: " + sourceDirName);

            }

 

            DirectoryInfo[] dirs = dir.GetDirectories();

            // If the destination directory doesn't exist, create it.

            if (!Directory.Exists(destDirName))

            {

                Directory.CreateDirectory(destDirName);

            }

 

            // Get the files in the directory and copy them to the new location.

            FileInfo[] files = dir.GetFiles(fileEx);

            foreach (FileInfo file in files)

            {

 

 

                string temppath = Path.Combine(destDirName, file.Name);

                

                file.CopyTo(temppath, true);

            }

 

            // If copying subdirectories, copy them and their contents to new location.

            if (copySubDirs)

            {

                foreach (DirectoryInfo subdir in dirs)

                {

                    string temppath = Path.Combine(destDirName, subdir.Name);

                    DirectoryCopy(subdir.FullName, temppath, fileEx, copySubDirs);

                }

            }

        }

 

        #region ScriptResults declaration

        /// <summary>

        /// This enum provides a convenient shorthand within the scope of this class for setting the

        /// result of the script.

        /// 

        /// This code was generated automatically.

        /// </summary>

        enum ScriptResults

        {

            Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,

            Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure

        };

        #endregion

 

}

}