Copiar archivos de PCusuario a carpetaservidor por CMD

Tengo archivos excel que los actualizo diariamente, el tema es que debo copiarlo diariamente al final del día en una carpeta compartida que es del servidor, como podría hacer que se copie automáticamente a una hora especifica en dicha carpeta del servidor y que sea por D.O.ES por medio de un archivo.

1 respuesta

Respuesta
1

Deduzco que no tienes experiencia en las "tareas programadas" de Windows. Si la tienes, pido perdón por la deducción y solo tendrías que crear un BAT que haga la copia que necesitas e incluirlo como tarea programada.

Si estoy en lo cierto me resulta más fácil, creo, enseñarte a usar el comando AT de MSDOS que enseñarte a usar las tareas programadas. En todo caso te recomiendo que aproveches para busarte documentación sobre ellas porque se trata de una herramienta muy útil.

Supongamos que tienes un BAT (de nombre COPEXCEL.BAT) que hace la copia que necesitas, un BAT con una serie de comandos tipo:

copy /y "c:\carpeta 1\ejemplo 1.xlsx" "e:\Carpeta de red\"

Para programar la ejecución todos los días de la semana a las 23:00, entras en una ventana CMD y tecleas:

At 23:00 /every:L, M, Mi, J, V, S, D "c:\CarpetaBat\copexcel.bat"

Esto si tu sistema operativo está en español. Si estuviera en inglés revisa la sintaxis tecleando en una ventana CMD el comando

at /?

Supongo que sería bueno incluir en el BAT de copia algún control de ejecución. Por ejemplo escribir en un archivo de texto, digamos copylog.txt algo como

Echo %DATE% %TIME% Copia realizada >> c:\CarpetaBat\copylog.txt

Si tienes alguna duda puedes preguntar.

Perfecto muchas gracias, me estoy iniciando en la parte informática y se me ocurre automatizar algunas cosas pero aun no se todo, retomando el tema, con respecto al codigo; la primera línea me funcionó muy bien, pero la segunda línea del At 23:00... y la tercera como que no logro entenderlas muy bien, ¿el carpetaBat y el copexcel.bat hacen referencia a mis carpetas y si es así debería terminar con el nombre midirectorioBat? ¿y el copexcel.bat es mi archivo a copiar?

La otra consulta es:

¿En el Date y Time debo especificar un dato exacto o queda así predefinido para que sea todos los días? Gracias por el apoyo

Vamos a ver si consigo que me entiendas. El COPEXCEL.BAT pretende ser el BAT que se va a encargar de las copias y que lo guardas en la carpeta c:\CarpetaBat. Tanto el nombre del BAT como el de la carpeta donde lo guardas son de tu elección. El BAT de las copias (COPEXCEL.BAT por ejemplo) tendría un aspecto similar a este:

@echo off
copy /y "c:\carpeta 1\ejemplo 1.xlsx" "e:\Carpeta de red\"
copy /y "c:\carpeta 1\ejemplo 2.xlsx" "e:\Carpeta de red\"
copy /y "c:\carpeta 2\ejemplo 3.xlsx" "e:\Carpeta de red\"
copy /y "c:\carpeta 2\ejemplo 4.xlsx" "e:\Carpeta de red\"
Echo %DATE% %TIME% Copia realizada >> c:\CarpetaBat\copylog.txt

%DATE% y %TIME% son invocaciones a "variables del sistema" que se sustituyen por la fecha y la hora en el momento de la ejecución del comando. Por tanto el comando "echo" en realidad escribiría en el archivo copylog.txt una línea como esta:

10/08/2016 09:47:38 Copia realizada

En cuanto al comando AT acabo de comprobar que está "desusado" en Windows10 (yo trabajo, todavía, con XP). Sugieren utilizar el schtasks en su lugar pero no tiene una sintaxis tan sencilla. Voy a estudiarlo y te digo algo más.

Ya he estado estudiando un poco por encima el comando/programa SCHTASKS (que ya existía en Windows XP, aunque no me había enterado). Si quieres saber más acerca de él solo tienes que abrir una ventana CMD y teclear:

schtasks /?

Para lo que a ti te interesa, una vez creado el BAT de copia (que suponemos se ha guardado en la carpeta c:\CarpetaBAT con el nombre copexcel.bat) los comandos necesarios serían:

Schtasks /create /tn CopiaDiaria /sc DAILY /st 23:00 /tr c:\CarpetaBat\copexcel.bat
schtasks /query /tn CopiaDiaria
schtasks /change /tn CopiaDiaria /st 21:30
schtasks /delete /tn CopiaDiaria

El primero es el que crea la tarea, le da como nombre CopiaDiaria (tn -> task name), dice que debe ejecutarse diariamente (sc -> schedule control -> DAILY), a las 23:00 (st -> start time) y que lo que tiene que ejecutar es el bat en cuestión (tr -> task run). El segundo comando te permite ver si se ha creado la tarea en las condiciones adecuadas. El tercero te permitiría cambiar la hora de ejecución (pasarla a las 21:30 en lugar de a las 23:00) y el último borraría la tarea programada. De modo que en lugar del AT de mi primera intervención lo que es necesario es el primero de los comandos.

Pregunta lo que se te ocurra y cuéntame como te va.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas