Foros de daboweb

GENERAL, ayuda informatica, trucos, problemas, internet, messenger, software, programas, solidaridad, P2P => Foro general - Internet - Trucos - Redes - Ayuda informatica - Software - Programas => Mensaje iniciado por: Pepe Casado en 08 de Junio de 2007, 11:33:39 am

Título: copias de seguridad desde un fichero bat (SOLUCIONADO)
Publicado por: Pepe Casado en 08 de Junio de 2007, 11:33:39 am
Hola, no sé si me dirijo al foro adecuado pero el problema que tengo es éste; deseo hacer un fichero .bat que me permita hacer una copia de seguridad de todos los archivos de "C:\datos\*.*"  a un pendrive "G:\datos" cosa que resulta fácil mediante el comando xcopy; pero lo que no sé es que instrucciónes añadir al fichero .bat para, a continuación, cambiar el nombre de "G:\datos" por otro que incluya la fecha del día, es decir  "G:\datos08062007".

Gracias.

Título: Re: puntobat
Publicado por: Mr_X en 08 de Junio de 2007, 05:44:22 pm
¿Algo como esto?

Código: [Seleccionar]
@echo off
for /f "tokens=2 delims= " %%A IN ('DATE /T') do xcopy /e C:\DATOS\*.* "G:\DATOS-%%A\*.*"
Título: Re: puntobat
Publicado por: Pepe Casado en 08 de Junio de 2007, 08:55:15 pm
Muchas gracias por tu contestación  pero no me funciona; cuando ejecuto el .bat que he creado copiando tus instrucciones, no da ningún error pero tampoco hace nada; como cosa curiosa puedo decirte que he eliminado el comando Echo off y lo he vuelto a ejecutar y el resultado que aparece en la pantalla es la segunda línea del .bat pero sin uno de los dos % que lleva la A en el final la instrucción:

Título: Re: puntobat
Publicado por: Mr_X en 08 de Junio de 2007, 09:09:45 pm
¿Seguro que no hace nada? Pega aquí la salida del comando:

Código: [Seleccionar]
date /t
Título: Re: puntobat
Publicado por: Pepe Casado en 09 de Junio de 2007, 11:43:10 am
date /t
for /f "tokens=2 delims= " %%A IN ('DATE /T') do xcopy /e C:\DATOS\*.* "G:\DATOS-%A\*.*"
   He pegado la salida que aparece en pantalla a continuación de date /t tal y como entiendo que me decías; como ves la diferencia entre la instrucción que se ejecuta y su resultado es que al final aparece G:\DATOS-%A en vez de G:\DATOS-%%A.

   Tambien he ejecutado el conjunto:   date /t for /f "tok.....  etc. etc.   y se queda el sistema operativo parado con el cursor a  la espera, y si doy INTRO empieza una copia buena al subdirectorio "G:\DATOS\sistema" para a continuación iniciar otra copia en el  subdirectorio llamado  "G:\DATOS\la";        en resumen se obtienen 2 copias iguales en esos 2 subdirectorios pero ninguno incluye la fecha.    Gracias.

     

Título: Re: puntobat
Publicado por: Mr_X en 09 de Junio de 2007, 08:35:12 pm
Te pedía la salida (únicamente) del comando DATE /T para ver como aparece en pantalla la fecha porque por ahí está el problema...

Prueba con este:

Código: [Seleccionar]
@echo off
for /f "tokens=1,2,3 delims=/" %%A IN ('DATE /T') do xcopy "C:\DATOS\*.*" "G:\DATOS-%%A%%B%%C\*.*" /E /Y
Título: Re: puntobat
Publicado por: Pepe Casado en 10 de Junio de 2007, 11:10:36 am
   Discúlpame, no te había entendido: La respuesta al comando DATE /T es la fecha del día con el formato dd/mm/aaaa.   
   Si ejecuto el .bat con las cambios que has hecho ocurre lo siguiente:   
1.- el cursor parpadea (supongo que pidiendo la fecha, cosa que no debía hacer puesto que debe tomar la fecha del sistema)     
2.- Introduzco la fecha con el formato anteriormente pedido dd/mm/aaaa.   
3.- Se inicia la copia que finaliza con el mensaje: "Error de creación de archivo; el nombre de archivo, dir o etiq. del volumen no es válido.  No se puede crear el dir: G:\DATOS\Escriba la nueva fecha: (dd-mm-aa)  0 archivos copiados".
 
   No obstante en G: aparece un directorio con el nombre "G:\DATOS\El sistema no puede aceptar la fecha que escribió" pero con los 144 archivos de los que consta la copia de seguridad corrrectamente copiados.     Gracias de nuevo.
Título: Re: puntobat
Publicado por: Mr_X en 10 de Junio de 2007, 06:46:36 pm
Raro, no te debería de pedir la fecha. A mí me funciona correctamente en mi máquina (XP)... Revisa que lo tengas bien escrito...
Título: Re: puntobat
Publicado por: Lector en 10 de Junio de 2007, 08:57:04 pm
Hola!  :-)

Solo por comentar... Mr_X, el primer bat que le apuntaste a mi tampoco me habia funcionado pero este ultimo sí, hizo exactamente lo que pide Pepe casado.

Lo unico, que para que se lea mejor la fecha le agregue un guion entre los ...%%A-%%B-%%C\...

P.D.: Mr_X podría apuntarme algun tutorial o algun sitio en el que pueda leer algo sobre el comando (o argumento o lo que sea  :???:) tokens? Me interesa ver si lo puedo incluir en un bat que utilizo yo pero no entiendo como usarlo.

Gracias y disculpa por la intromisión. ;-)
Título: Re: puntobat
Publicado por: Mr_X en 10 de Junio de 2007, 09:52:27 pm
Solo por comentar... Mr_X, el primer bat que le apuntaste a mi tampoco me habia funcionado pero este ultimo sí, hizo exactamente lo que pide Pepe casado.

P.D.: Mr_X podría apuntarme algun tutorial o algun sitio en el que pueda leer algo sobre el comando (o argumento o lo que sea  :???:) tokens? Me interesa ver si lo puedo incluir en un bat que utilizo yo pero no entiendo como usarlo.

Sí, el primer ejemplo que puse lo hice para un Windows 2000, por eso era que en XP no funcionaba... Gracias por confirmar que este nuevo sí funciona ;-)

Para lo de los 'tokens', mira aquí (http://www.robvanderwoude.com/ntfortokens.html) (en inglés)...

Saludos
Título: Re: puntobat
Publicado por: Lector en 11 de Junio de 2007, 10:32:04 pm
Muchas tanks you! Ya voy a ver como lo desculo ;-)
Título: Re: puntobat
Publicado por: Mr_X en 12 de Junio de 2007, 04:07:34 am
Muchas tanks you! Ya voy a ver como lo desculo ;-)

Si tienes alguna duda, plantéala aquí a ver si te podemos ayudar...
Título: Re: puntobat
Publicado por: Pepe Casado en 12 de Junio de 2007, 01:32:36 pm
  Perdona por la insistencia porque aunque yo uso XP sigue sin funcionar.
    Como el problema no está en la copia sino en el renombrado del subdirectorio ¿por qué no intentas escribirme solamente esa instrucción; a mi parecer debería ser algo así como (una vez hecha la copia de C: a  G: mediante un xcopy corriente)

  ren  g:\datos "g:\datos_%date:/=%"

que por supuesto no cambia el nombre del subdirectorio pero al menos en el mensaje de error (LA SINTAXIS DEL COMANDO NO ES CORRECTA) si incluye el nombre "datos12062007"
      Gracias, 
Título: Re: puntobat
Publicado por: Mr_X en 12 de Junio de 2007, 04:37:32 pm
Copia y pega TAL CUAL el contenido de tu archivo BAT...
Título: Re: puntobat
Publicado por: Pepe Casado en 12 de Junio de 2007, 07:44:38 pm
    Te ruego disculpes las molestias pero ahora ya funciona correctamente.

    De todas formas, dado que no entiendo estas instrucciones, te pediría que me contestases, si es posible, a la pregunta que te hacía en el punto 11; la relativa únicamente a la instrucción REN (cambiar el nombre de un archivo por el mismo nombre más la fecha).


        Muchas gracias por todo e independientemente de tu respuesta doy por finalizado el tema.
        Un saludo.
Título: Re: puntobat
Publicado por: Mr_X en 12 de Junio de 2007, 09:42:08 pm
¿Le modificaste algo para que funcionara?

Para lo de renombrar, el problema que tendrías es que el formato que tienes para la fecha (variable %DATE%) tiene diagonales (12/06/2007) lo que haría que el nombre fuera inválido... Dos cosas que puedes hacer es usar el comando FOR como en el ejemplo anterior ó cambiar el formato de fecha corta en las opciones regionales del Panel de control para que no usara diagonales, y, entonces sí, usar el comando que propones:

Código: [Seleccionar]
ren directorio "directorio-%DATE%"
Título: Re: puntobat
Publicado por: Pepe Casado en 13 de Junio de 2007, 09:18:10 am
   Hola otra vez; no sé el motivo por el que no puedo usar "copiar y pegar" entre DOS y los mensajes del foro de modo que siempre he tenido que transcribir tus instrucciones; siempre lo he hecho cuidadosamente y al ver que no funcionaba me dedicaba a probar haciendo algún cambio de mi cosecha que tampoco daba resultados; la única explicación que se me ocurre es que hubiera tecleado algún carácter no visible que impidiera la corrrecta ejecución del bat y que en los sucesivos cambios lo eliminara de forma inconsciente y al reescribir el bat hubiera quedado corregido. Sea como sea el caso es que ahora funciona correctamente.
   Respecto al caso de la instrucción REN tienes razón; he cambiado, como decías, el separador y ahora también funciona correctamente.   
    Gracias y hasta la próxima.