copiar archivos de una carpeta

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
como puedo copiar todos los archivos de una carpeta y que un progress bar me muestre el proceso
gracias creo que este tema ya estaba en este foro pero no recuerdo donde y no puedo encontrarlo
Uhmmm... yo lo he hecho pero sin barra de preogreso, ya que los archivos eran pequeños y realmente no vale la pena la programacion de la barra por archivos pequeños (en mi caso), ademas un FolderBrowse para que el usuario pueda seleccionar la ruta de copia, pero sin barra de progreso yo lo hice y lo haria asi, claro con un  mensaje para avisar al usuario que la copia termino con exito o hubo un error en la copia

1. Copia la carpeta en la carpeta raíz de tu proyecto y aqui el script en on click (hago el ejemplo del script con una copia de Wallpapers):

ruta = Dialog.FolderBrowse("Selecciona donde quieres guardar los Wallpapers:", _WindowsFolder.."\\Imágenes");
File.Copy("AutoPlay\\Images\\Biohazard.jpg", ruta, true, true, false, true, nil);
File.Copy("AutoPlay\\Images\\Darkness.jpg", ruta, true, true, false, true, nil);
File.Copy("AutoPlay\\Images\\DigitalBlack.jpg", ruta, true, true, false, true, nil);
error = Application.GetLastError();
if error ~= 0 then
     Dialog.Message("Ups...", "Ocurrio un error inesperado copiar los Wallpapers, intentalo de nuevo.", MB_OK, MB_ICONSTOP, MB_DEFBUTTON1);
else
    Dialog.Message("Exito", "Los Wallpapers fueron copiados correctamente", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end
-COMPLEMENTACION DE MI SCRIPT-

*En caso de archivos muy pesados que si lleve un poco mas tiempo de copia, se puede agregar la barra de progreso.

*Un script de copia directa a un directorio especifico, sin que el usuario elija donde se copiarán los datos.


Espero que te sirva y que compañeros de amsspecialist complementen mi script o ejemplo para mejor aspecto visual del software y optimizacion del codigo ;)


WOOA! Saludos !! :)
Espero esto tambien te ayude
Por supuesto hay otras formas mas simplistas de hacer esto
--[[

	xButton
	Hay muchas opciones en programacion para hacer algo.
        Muy Parecido a la Matematica.

--]]

--Buscamos los archivos a Copias

local tAllFile = File.Find(Shell.GetFolder(5), "*.*", false, false, nil, nil);

--Contador para el Progress

local c = 0;

if tAllFile ~= nil then

	--Recorremos la tabla
	for j, k in pairs(tAllFile) do
	
		File.Copy(k, _TempFolder, true, true, false, true, nil);
	
		c = c + j;
		
		Progress.SetCurrentPos("Progress1", (100 * c)/(Table.Count(tAllFile)));
		Progress.SetText("Progress1", String.SplitPath(k).Filename.." % "..Math.Round((100 * c)/(Table.Count(tAllFile))), 0); --esto puedes cambiarlo por un paste
		
		--Esto hace mas lento la capia, esto muchas veces no es necesario si la cantidad de archivos es grande
		Application.Sleep(100);
	
	end
	
	--Aca Borramos los Datos del Progrees
		Progress.SetCurrentPos("Progress1", 0);
		Progress.SetText("Progress1", ""); --esto puedes cambiarlo por un paste
		

	else
	
	--Mensaje de Error

end
así me gusta entre todos podemos ayudarnos, la idea de este foro es que los usuarios vallan aprendiendo y ayudando a otros, pim pam pim pam!! jejejeje, un saludo!
jajajaja pim, pam no, tiki ,taka como el barça. XD
@Ceone jajajaja como debe ser xD

@rafaxplayer exactamente jajajajajaa'
Gracias por la respuesta y si funciona pero lo que yo pregunte como copio todos los archivos de una carpeta seleccionada con un progress bar
selecimg = Dialog.FolderBrowse("Por favor seleccione la Carpeta de las imagenes", _DesktopFolder)
estuve tratando de acomodar a mi proyecto pero me sale el sgt error "Error bad argument #1 to pairs (table expected, got string) stack traceback"

el codigo que estoy utilizando es el sgt
selecimg = Dialog.FolderBrowse("Por favor seleccione la Carpeta de las imagenes", _DesktopFolder);
--Contador para el Progress

local c = 0;

if selecimg ~= nil then

        --Recorremos la tabla
        for j, k in pairs(selecimg) do
        
                File.Copy(k, _SourceFolder.."\\Autoplay\\Docs\\", true, true, false, true, nil);
        
                c = c + j;
                
                Progress.SetCurrentPos("Progress1", (100 * c)/(Table.Count(selecimg)));
                Progress.SetText("Progress1", String.SplitPath(k).Filename.." % "..Math.Round((100 * c)/(Table.Count(selecimg))), 0); --esto puedes cambiarlo por un paste
                
                --Esto hace mas lento la capia, esto muchas veces no es necesario si la cantidad de archivos es grande
                Application.Sleep(100);
        
        end
        
        --Aca Borramos los Datos del Progrees
                Progress.SetCurrentPos("Progress1", 0);
                Progress.SetText("Progress1", ""); --esto puedes cambiarlo por un paste
                

        else
        
        --Mensaje de Error

end
 
lo que intento es copiar todo el contenido de una carpeta con el Dialog.FolderBrowse
espero sus ayudas y un saludo para todos los usuarios de este fantastico foro
function CopyEmptyTree(sInSrcFolder, sInDstFolder)
	StatusDlg.Show();
	StatusDlg.ShowProgressMeter(false);
	tFolder = Folder.Find(sInSrcFolder, "*", true, FindFolderCallback);
	StatusDlg.Hide();
	if tFolder ~= nil then
		for i = 1, Table.Count(tFolder), 1 do
			tFolder[i] = String.Replace(tFolder[i], sInSrcFolder, sInDstFolder, true);
			if not Folder.DoesExist(tFolder[i]) then
				Folder.Create(tFolder[i]);
			end
		end
	end
end



function Folder.Copy(sInSrcFolder, sInDstFolder)
	CopyEmptyTree(sInSrcFolder, sInDstFolder);
	StatusDlg.Show();
	StatusDlg.ShowProgressMeter();
	StatusDlg.ShowCancelButton(true, "cancel");
	File.Copy(sInSrcFolder .. "\\*.*", sInDstFolder .. "\\", true, true, true, true, nil);
	StatusDlg.Hide();
end
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


1- Create "2" Button and "2" Input

2- On Properties Button1
result = Dialog.FolderBrowse("Please select a folder:", _DesktopFolder);
Input.SetText("Input1", result)
3- On Properties Button2
result = Dialog.FolderBrowse("Please select a folder:", _DesktopFolder);
resultxxxxx = Input.GetText("Input1");

strXXX = String.SplitPath(resultxxxxx);

Input.SetText("Input2", ""..result.."\\"..strXXX.Filename.."")
3- Create Button3 "Copy" and On Properties
local result1 = Input.GetText("Input1");

local result2 = Input.GetText("Input2");

Folder.Create(result2);

Folder.Copy(""..result1.."", ""..result2.."");
Gracias abood1987 muy buena respuesta es lo que necesitaba para mi proyecto :num1: :num1: :num1: :num1: :num1: :num1: :num1: