Duda sobre File.Copy

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Hola, espero que tengan un excelente dia, recientemente estoy incursionando en Autoplay Media Studio, pero aun no se como ocupar muchas de las acciones aunque comprendo superficialmente sus funciones. Pero lo que quiero hacer es copiar determinados archivos a esta carpeta al dar un click en un boton:
C:\Users\USERNAME\AppData\Roaming\.minecraft\mods
Pero como sabran la ruta de username cambia dependiendo de la computadora y la sesion iniciada, asi que agradeceria mucho que me dijeran como es que consigo realizar esa operacion en autoplay.
Ejemplo Andres se descarga mi autorun y al dar click en ese boton los archivos se copian en su carpeta osea.
C:\Users\Andres\AppData\Roaming\.minecraft\mods
De antemano agradezco su ayuda y espero que si se pueda hacer. :sorry:

Pruebe con este código, a mi me ha funcionado muy bien en mis proyectos
File.Copy(_SourceFolder.."\\Autoplay\\Docs\\Respaldo".."\\*.*",  "C:\\Respaldo", true, true, false, true);

No te olvides de cambiar rutas sin tocar las terminaciones después de - Respaldo - en la primer parte del script ,pues esta función hace que se copie por completo todo el contenido de una carpeta sin importar la extencion de sus archivos contenidos.

Se me olvidaba que si vas a mover para otra carpeta debes ejecutar un script para crear la carpeta donde irán las archivos finales, por el contrario no te copiara los archivos.

Un saludo desde la Capital de los Alumbrados MEDALLO

Yo creo que estas preguntando exactamente como pillar la ruta del actual user en la que tiene la sesion de windows abierta a juzgar por el texto resaltado en rojo y luego hacer la copia, seria asi;
strCarpetaUser = Shell.GetFolder(SHF_APPLICATIONDATA);--esta es la ruta de la carpeta appData del usuario actual...

File.Copy(_SourceFolder.."\\Autoplay\\Docs\\Respaldo".."\\*.*", strCarpetaUser.."\\Roaming\\minecraft\\mods", true, true, false, true);

Y siguiendo los consejos que te ha dado Luma con eso te valdria la copia del archivo....Las rutas oficiales de Windows en carpetas de usuarios esta en la ayuda del programa.

;) precisamente así como te dice el buen carzoncillo

Hola, he intentado hacerlo como me dicen pero no consigo que se copie nada.
¿todo el codigo va en el script del boton al hacer click?
¿algo de ese codigo va en funciones globales?
Agradezco a todos los que me han ayudado pues busque y busque como obtener appdata en la guia de AMS y ahora al dar doble click ahi estaba y yo no me fije.

1 para que se copie hay que buscar la ruta de los archivos, si es una carpeta usa mi codigo y te lo hara perfectamente, solo que para que tenga el lugar de donde seran puestos los archivos copiados hay que crear una carpeta pa ello.


2 . si es un archivo la funcion es otra.

3 dele permisos a tu proyecto en setings, configuracion, requiere admin

Muy bien, vamos por partes...
1.- ¿todo el codigo va en el script del boton al hacer click? Sí
2.- ¿algo de ese codigo va en funciones globales? No
AppDataFolder = Shell.GetFolder(SHF_APPLICATIONDATA); --Obtiene la ruta de la carpeta AppData\Roaming;
File.Copy(_SourceFolder.."AutoPlay\\Docs\\*", AppDataFolder.."\\.minecraft\\mods\\"); --Copia todos los archivos de la carpeta Docs
Si la carpeta seleccionada no existe no se copiara nada.

No es nada que una buena leída de la ayuda de AMS no pueda resolver.

Correcto Dowsher .

Mas bien no puede ser....

Saludos

Ya lo pude hacer, muchas gracias ahora tengo dudas sobre "callback" pero tendria que abrir una nueva pregunta para esto no? y dowsher gracias pero por mas que me leo esa guia me cuesta mucho trabajo entenderle, no se porque.

En programación de computadoras, una devolución de llamada o retrollamada (en inglés: callback) es una función "A" que se usa como argumento de otra función "B". Cuando se llama a "B", ésta ejecuta "A". Para conseguirlo, usualmente lo que se pasa a "B" es el puntero a "A".

Simplemente CallBack lo que hace es ejecutar otra operacion mientras hay otra en ejecucion, usa este codigo como ejemplo.
--INICIA LA FUNCION  --- CALLBACK--PARA EL LLAMAMIENTO DE OTRAS FUNCIONES 3RAS
function CopyCallBack (sSource, sDestination, nCopied, nTotal,FileCopied,FileTotal)
finish = false;--SI SE FINALIZA POR ERROR NO SALDRA LA FUNCION LLAMADA Y NO MOSTRARA MENSAJE 
        TotalSize = String.GetFormattedSize(nTotal, FMTSIZE_MB, true); --ANALIZA EL TAMAÑO DE EL PESO DEL ARCHIVO COPIADO
        CopiedSize = String.GetFormattedSize(nCopied, FMTSIZE_MB, true); --NO SE QUE HACE PERO ES REFERENTE A LO COPIADO JAJAJA
        StatusDlg.SetMeterRange(0, Math.Floor((FileTotal/1024)*65534));-- INICIA EL DIALOGO DE COPIANDO DESDE POSICION CERO
        StatusDlg.SetMeterPos(Math.Floor((FileCopied/1024)*65534));--MUESTRA EL ESTADO DE LA BARRA EN TAMAÑO SEGUN EL PESO DEL ARCHIVO
        tCurrentFile = String.SplitPath(sSource);--NI IDEA QUE HACE PERO HACE REFERENCIA A LA CARPETA DE DONDE SE COPIARA
        sCurrentFile = tCurrentFile.Filename .. tCurrentFile.Extension;--MUESTRA LAS EXTENCIONES DE LOS ARCHIVOS COPIADOS.
        SourceEx = String.SplitPath(sSource);--NI IDEA QUE HACE....
        DestinationEx = String.SplitPath(sDestination);--NI IDEA
        DestinationFile = DestinationEx.Folder;--NI IDEA
        
        StatusDlg.SetTitle("Titulo de la ventana");--TITULO DE LA VENTANA DE COPIANDO--
        StatusDlg.SetMessage("Copiando datos: "..sCurrentFile.." \r\nDestino: "..DestinationFile);--TEXTOS MIENTRAS COPIA
        StatusDlg.SetStatusText("Copiados: ".. CopiedSize.."/"..TotalSize);--MUESTRA EL TAMAÑO DE EL PESO DE ARCHIVOS MIENTRAS COPIA
        if nCopied == nTotal then--ANALIZA LO COPIADO CON EL TOTAL DE LA CARPETA A COPIAR.
        finish = true;--SI SE FINALIZA BIEN EL COPIADO ENTONCES
        end
  end

StatusDlg.Show(MB_ICONNONE, false);--NI IDEA QUE HACE PERO ES EL ICONO DE INFORMACION. STOP. OK ..JEJEJEJ
StatusDlg.SetAutoSize(false);--
File.Copy(_SourceFolder.."\\Autoplay\\Docs\\Ejempplo".."\\*.*", "C:\\Ejemplo", true, true, false, true, CopyCallBack);--ESTA LINEA ACTIVA LA FUNCION CALLBACK (CopyCallBack)
StatusDlg.Hide();--OCUALTA EL DIALOGO QUE ACTIVO CALBAK AUTOMATICAMENTE
if finish == true then--SI FINALIZA TODO MUY BIEN ENTONCES LANZA ESTE MENSAJE. PODES USAR UN SONIDO..UN TEXTO ES TU GUSTO.
Dialog.Message("Titulo de la ventana", "Exito del proceso de copiado !", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end--FINAL DEL CODIGO
Saludes desde Medellin

Si eso es lo que quería hacer, quería que se viera el proceso de copiado y que mostrara un mensaje al final, pero tu me podrias explicar cada renglon, pues he leido una guia publicada aqui en pdf y aunque entiendo mas o menos los conceptos me cuesta trabajo aplicarlos al proyecto.
¿Crees que me puedas explicar cada renglon?
Agradezco mucho que me hayas ayudado y si no quieres por ser muy tedioso o por falta de tiempo lo comprendere aun asi todos se merecen mis mas sinceros agradecimientos.

Codigo actualizado.

no es lo mas correcto . no soy experta apenas estoy aprendiendo y llevo 1 mes descubriendo ams.

Aun asi muchas gracias.

:closed: