He programado un script de respaldo que hace que la base de datos se vuelque. ¿Cómo puedo agregar la marca de fecha y hora al nombre del archivo?
Estoy hablando de Windows y CMD.
He programado un script de respaldo que hace que la base de datos se vuelque. ¿Cómo puedo agregar la marca de fecha y hora al nombre del archivo?
Estoy hablando de Windows y CMD.
Respuestas:
En el símbolo del sistema y los archivos por lotes, puede usar %date%
y %time%
para devolver la fecha y la hora, respectivamente. La fecha funciona bien, pero el valor de tiempo devuelto contiene dos puntos, que son ilegales para su uso en los nombres de archivo, pero hay una manera de eliminarlos.
Use algo como:
COPY file.txt file_%time:~0,2%%time:~3,2%%time:~6,2%_%date:~-10,2%%date:~-7,2%%date:~-4,4%.txt
Esto producirá un nombre de archivo como file_172215_01062009.txt
Actualización: Los comentarios a continuación tienen giros interesantes en este comando, así como algunos problemas potenciales que puede evitar.
%DATE%
y %TIME%
son locales! Significa que en una máquina europea, obtienes DD.MM.YYYY
. Arrgh
Utilice las variables de entorno %DATE%
y / o %TIME
, opcionalmente, sustituya los caracteres que no están permitidos en los nombres de archivo, utilizando %name:from=to%
( %TIME::=%
eliminaría todos los dos puntos).
teoría »echo% date% 2009-06-01 teoría »echo% tiempo% 16: 30: 41,46 teoría »echo% tiempo :: =% 163052,17 teoría »echo% tiempo :: =,% 16,30,58,68 teoría »copia de seguridad de eco-% date% -% time :: = -%. zip backup-2009-06-01-16-31-18,82.zip
set tmp=%tmp:x=y%
etc
La única forma confiable de obtener la fecha apropiada, independientemente de la configuración regional, es la solución de foxidrive @ /programming/11037831/filename-timestamp-in-windows-cmd-batch-script
@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause
Use la variable% DATE% en el nombre del archivo.
También hay una variable% TIME%, pero contiene caracteres no permitidos en un nombre de archivo.
Aquí hay un ejemplo de cómo escribir una línea de texto en un nuevo archivo, donde el archivo creado tiene una fecha y hora en su nombre.
echo "testfile" >> backup-%DATE%.txt