How to call a recursive function inside an Invoke code activity?

Hi @ahzaradsh ,

This is a rough guess, Invoke Code works similar to a main method, so you will need to write your script something like this

Things to consider:

  • I’m not sure if the script compiler is going to like your method to be static
  • The public access might not be strictly necessary
  • You could achieve the same results using built in activities, have you considered something as simple as setting “continue on error” to true or checking if the file exists before writing it (also built in)?
    void CopiarFiles(string carpetaOrigen, string carpetaDestino)
    {
        // check si carpeta de destino existe
        if (!Directory.Exists(carpetaDestino)) Directory.CreateDirectory(carpetaDestino);

        // obtiene files dentro de carpeta de origen
        string[] files = Directory.GetFiles(carpetaOrigen);

        // itera a través de cada file
        foreach (string file in files)
        {
            // obtiene nombre del file(sin la ruta)
            string name = Path.GetFileName(file);
            // obtiene nombre del file + la ruta de destino
            string dest = Path.Combine(carpetaDestino, name);

            // intenta copiar file, si file existe, salta la iteración
            try
            {
                File.Copy(file, dest);
            }
            catch
            {
                continue;
            }
            
        }

        // Obtener folders dentro de carpeta de origen
        string[] folders = Directory.GetDirectories(carpetaOrigen);

        // itera a través de cada folder
        foreach (string folder in folders)
        {
            // obtiene nombre del folder (sin la ruta)
            string name = Path.GetFileName(folder);
            // obtiene nombre del folder + la ruta de destino
            string dest = Path.Combine(carpetaDestino, name);

            // intenta copiar el folder y contenidos recursivamente, si folder existe, salta la iteración
            try
            {
                CopiarFiles(folder, dest);
            }
            catch
            {
                continue;
            }
            
        }

    }

string RutaOrigen = @"C:\Users\MrRobot\Desktop\New Folder 1";
string RutaDestino = @"C:\Users\MrRobot\Desktop\New Folder 2";

 CopiarFiles(RutaOrigen, RutaDestino);