Cargando...
Dentro de nuestros sistemas de información es normal tener varios procesos por lotes (batch) que se ejecuten siempre a determinadas horas, un ejemplo típico son las copias de seguridad (backups). Si trabajáis en entornos Windows, es habitual programar pequeñas tareas en MS DOS Script (o CMD Script o Command Script), los famosos .bat.
Los scripts de MS DOS no tienen la potencia de los scripts de cualquier shell de UNIX, sin embargo para las tareas de mover/borrar/copiar ficheros resultan especialmente útiles por su sencillez.
Además de trabajos con ficheros se pueden hacer muchas más cosas con un script de MS DOS, pero resultan extremadamente complejas y poco potentes en comparación con otras soluciones para entornos Windows, por ejemplo el uso de WSH (Windows Script Host) o VBS (Visual Basic Script).
Una de las tareas más frecuentes que he realizado al crear un fichero/carpeta es la necesidad de incorporar la fecha de creación al nombre del fichero/carpeta. Para resolver este problema llevo años utilizando el siguiente script:
1: rem ------------------------------------------------------
2: rem Obtenemos la fecha en la variable de sistema %mifecha% en formato yyyymmdd
3: rem Obtenemos la variable %tmpfecha%, tiene espacios en blanco.
4: for /f "usebackq tokens=1,2,3 delims=/" %%i in (`date /t`) do set tmpfecha=%%k%%j%%i
5: rem Limpiamos los espacios en blanco.
6: for /f "usebackq tokens=1,2,3 delims= " %%i in (`echo %tmpfecha%`) do set mifecha=%%i%%j%%k
7: rem ------------------------------------------------------
Primero obtenemos la fecha del sistema y le quitamos los caracteres “/”, después quitamos los caracteres en blanco que quedan. El formato de la fecha obtenida es yyyymmdd y para utilizarla sólo debemos hacer lo siguiente:
1: copy mifichero.txt "mifichero_backup_%mifecha%.txt"
Imprime este post
8 comentarios sobre MS DOS Script: Obtener la fecha del sistema
Pues justamente hace unas semanas tenía que montarme un pequeño sistema de copias de seguridad basado en un script ya existente en MSDOS. La parte de almacenar la copia diaria en una carpeta y su posterior borrado (que en teoría es sencillo) fue difícil de encontrar por la web, por lo que me hubiera venido estupendo el script BAT que acabas de publicar. Gracias por la info y un saludo.
Oye mi amigo, este script es para win98?
Este script en principio es válido para Windows 98. Sin embargo, sino recuerdo mal lo creé para un Windows 2000 y nunca lo he probado en un Windows 98.
Gracias Amigo, lo acabo de probar y funciona de maravilla en win2k.
Aqui esta mi adaptacion: Muchas gracias lcflores.
**********EMPIEZA backup.BAT*******
CLS
@echo off
color a
echo. ****** A T E N C I O N *********** A T E N C I O N ********
echo. + +
echo. ****** A T E N C I O N *********** A T E N C I O N ********
echo. ****** Se realizara el respaldo de archivos de LANmark. ***
echo. ****** Este proceso copiara los archivos del sistema al ***
echo. ****** Disco duro del Servidor en G:\respaldos. ***********
ECHO.
echo. ****** + + ******
echo COMENZARA EL RESPALDO DE ARCHIVOS DE LANMARK
set /p pre= Deseas continuar? (s/n)
if %pre%==s goto RESPALDO
if %pre%==S goto RESPALDO
if %pre%==n goto CANCELARESP
if %pre%==N goto CANCELARESP
:RESPALDO
echo. INICIANDO BACKUP A LAS %time% DEL DIA %date%
echo. RESPALDO DE ARCHIVOS EN PROGRESO…
echo + +
echo. MAPEANDO DRIVE G:
MAP G:=DATA:
G:
cd G:\respaldos
mkdir ACTUAL
cd..
cd lanmark
xcopy G:\LANMARK\FILES G:\respaldos\ACTUAL /S/E
for /f “usebackq tokens=1,2,3 delims=/” %%i in (`date /t`) do set tmpfecha=%%k%%j%%i
for /f “usebackq tokens=1,2,3 delims= ” %%i in (`echo %tmpfecha%`) do set mifecha=%%i%%j%%k
cd..
cd G:\respaldos
move ACTUAL %mifecha%
ECHO. ****** RESPALDO TERMINADO.*******
goto END
:CANCELARESP
echo. RESPALDO CANCELADO, PULSE CUALQUIER TECLA PARA SALIR
exit
:END
echo. ******** PULSE CUALQUIER TECLA PARA SALIR ********
pause
exit
Necesito obtener el dia de la semana, para hacer los backups de un sistema bajo script en Ms-dos. He mirado, y mirado y remirado y el comando date solo me muestra el formato dd/mm/aaaa. Pero por ningun lado me aparece si es Lunes o Sabado. Sabrías como podría obtenerlo??
Muchísimas gracias.
Saludos
Hola Lupita,
Me temo que tendrás que usar algo más que un script de MS-DOS para lo que quieres hacer. Se me ocurren las siguientes alternativas:
a) Usa Cobian Backup
b) Usar un script WSH (Windows Script Host) o en ortras palabras un script VBS.
c) Usar programa en perl o algún otro lenguaje sencillo y que se utiliza para este tipo de tareas administrativas.
Lcflores
Me parece que tu script es fabuloso, lo he adaptado a mi caso y me ha funcionado, el unico pero es que al final de la fecha me agrega un espacio en blanco. No se como quitarlo, estoy investigando porque soy nuevo en este tipo de programacion.
Si alguien lo sabe, se le agradece
Deja tu comentario sobre MS DOS Script: Obtener la fecha del sistema
*Nota: Sólo se tendrán en cuenta los comentarios correctamente redactados y que estén relacionados con el tema de la entrada.RSS a los comentarios de esta entrada · TrackBack URI