Inconsistencia al copiar con BAT

Estoy copiando un .bak de un servidor "A " a uno "B". Con un bat simple: mediante una unidad de red compartida "J"

copy  D:\bk\archivo.bak Y J:\bk\

exit 

Cuando lo ejecuto copia el .bak en la ruta compartida y hasta indica que pesa igual que el archivo original, pero la ventana que se abre del cmd se queda abierta y con el cursor blanco estancado como si estuviera colgado, lo deje hasta una hora y nada, el archivo solo pesa 180 megas al comprobar el estado del archivo de destino con el sql, me indica que el archivo esta imcompleto, por ende no puedo realizar el restore... Alguna

2 Respuestas

Respuesta
1

No sé si tendrá algo que ver pero no entiendo que significa la "Y" que aparece en el comando:

copy  D:\bk\archivo.bak Y J:\bk\

Pero intuyo que es un error y que en realidad sería "/Y". Desde luego no parece justificado que tarde más de hora y media en copiar un archivo de 180 MB pero podría haber problemas de acceso a la carpeta de destino. Te sugiero que pruebes directamente el comando, con la misma sintaxis, desde una ventana CMD a ver si lo termina. O, incluso, que lances la copia desde el explorador de Windows que te abrirá una ventanita con barra de progreso y te permitirá ver si se copia a una velocidad razonable. El hecho de que veas, desde otra ventana, el archivo en el destino como si ya estuviera copiado es habitual en estas copias y no supone que la copia haya terminado. Cuando termine de verdad debería salir un mensaje diciendo "1 archivos copiado".

Gracias por su respuesta, la "Y" es error mio al digitar el comando si funciona, por que  hago la prueba de copiar los mismos archivos de forma local, es decir en su mismo disco C y  si copia, ahora si lo copio desde el explorador de windows, con Click derecho copiar pegar si lo copia bien y tarda unos 10 minutos. el problema es al ejecutarlo desde el bat. se ejecuta pero solo se abre la ventana de del cmd y se queda negra toda esa ventana y nunca sale ningún mensaje

Gracias desde ya por su tiempo.

Pero la prueba en el mismo disco local (C:) no aporta información porque intuyo que se puede tratar de un problema de acceso a la carpeta de destino en la unidad de red (J:). Tanto si lo haces desde CMD como si lo haces desde el explorador de Windows el origen y el destino de la copia debe ser el mismo, para poder sacar conclusiones. Creo que la razón por la que desde el BAT no sale ningún mensaje es que el comando COPY del BAT no llega a terminar (debería decir "1 archivos copiado"). Intenta hacer las pruebas en las mismas condiciones a ver si así termina el comando (que creo que no lo hará) o da alguna información del problema subyacente.

También puedes cambiar en el BAT el archivo a copiar por otro más pequeño, con el mismo origen y destino, para ver si en esa situación se mantiene o no el problema. De esta forma podríamos saber si la causa del mismo es el tamaño del archivo.

Muchas gracias por brindar tu tiempo, púes realicé unas pruebas y el .bat esta bien, los accesos a la unidad de red tambien son los correctos, hecho las pruebas con archivos pequeños de hasta 14 mb, pero al probar con uno de 180 es donde se queda la pantalla en negro del cmd que se auto abre al ejecutar el .bat. Debo presumir que es el tamaño. Probare comprimirlo mediando un .bat y en el mismo lo enviaré con ése tamaño reducido. Le comentaré al respecto. Y Gracias nuevamente. 

Lo que no me queda claro es si has llegado a probar el comando COPY directamente, desde una ventana CMD en idénticas condiciones al que da problemas dentro del BAT. Es decir, abrir una ventana CMD (Inicio, Ejecutar, CMD) y escribir el comando: copy  D:\bk\archivo.bak /Y J:\bk\

Creo que este comando debe tener los mismos problemas ejecutado de esta manera. En cuanto al tamaño creo que debería salir algún mensaje de error si se espera un tiempo suficiente. ¿Has probado a usar el comando XCOPY, como te sugería talaverano26?

Parece que era por el tamaño porque ahora uso esto:

@echo off


CD\
"C:\Program Files\7-Zip\7z" a C:\2042010254\INFOREST.7z C:\2042010254\INFOREST.BAK

echo Zipeado Correcto Espere mientras se copia el bak a la ruta de destino

copy C:\2042010254\INFOREST.7z O:\Restaurantes\3009PasqualeSalaverry

echo Proceso Completo

exit

 Y se puedo copiar,  ahora lo que averiguare es como crear un archivo de texto que guardaré en la misma ruta que me indique la hora de inicio y la hora de fin en la que termina el proceso. Es posible?  Cuando me refiero a proceso quiero decir la hora que inicia el bat y la hora que termina, ya que lo dejare corriendo por el programador de tareas de windows.

Si te he entendido bien quieres registrar en un archivo, digamos de nombre baklog.txt, la fecha/hora de inicio del bat y la fecha/hora de fin. Eso es tan sencillo como incluir las líneas

Echo Inicio: %date% %time% >> baklog.txt
echo Fin: %date% %time% >> baklog.txt

en los puntos que corresponda. Si quieres controlar el fin del proceso de compresión ("zipeado") puedes poner otra línea similar. Si quieres que en el baklog.txt se vayan almacenando los distintos procesos, de diferentes fechas, lo harás así. Si quieres que solo se registren los del último proceso la primera línea (la de Inicio) deberá tener un solo > en lugar de los dos que tiene (>>).

Lo máximo, me funciona muy bien Gracias por el apoyo

Me alegro de que haya servido. En realidad contesto para no tener la pregunta pendiente de respuesta. Por tanto no hace falta que añadas nada. Si tienes algún otro problema abre otra pregunta.

Respuesta

El compañero es el experto real en archivos BAT, yo solo te puedo sugerir que uses como alternativa el comando XCOPY y que en el archivo BAT entres primero en la carpeta J y desde ahí hagas la copia al disco local para hacer la prueba y para descartar problemas de permisos, firewall, etc. también puedes poner un PAUSE al final del fichero BAT para ver la salida de los comandos por si te cerrase la ventana el BAT o te ocultase algún error.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas