Encontré un error en mi script de DOS que usa datos de fecha y hora para nombrar archivos. El problema fue que terminé con un espacio porque la variable de tiempo no proporcionaba automáticamente un cero inicial para la hora <10. Entonces, ejecutar> echo %time% devuelve: ' 9:29:17.88'.
¿Alguien conoce alguna forma de rellenar condicionalmente los ceros iniciales para solucionar este problema?
Más información: El comando de configuración de mi nombre de archivo es:
set logfile=C:\Temp\robolog_%date:~-4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.log
que termina siendo: C:\Temp\robolog_20100602_ 93208.log (para las 9:23 de la mañana).
Esta pregunta está relacionada conÉste.
Gracias
Respuesta1
Una forma muy sencilla es simplemente reemplazar el espacio inicial con cero:
echo %TIME: =0%
resultados:
09:18:53,45
Respuesta2
Mi solución fue utilizar la siguiente idea:
SET HOUR=%TIME:~0,2%
IF "%HOUR:~0,1%" == " " SET HOUR=0%HOUR:~1,1%
Respuesta3
idea similar ala respuesta de dennis. El problema es que el ancho de %time%
es siempre el mismo, por lo que inserta un espacio al principio en lugar de devolver una cadena más corta.
Puedes deshacerte de eso con for
:
for /f "delims= " %x in ("%time%") do set T=0%x
El resto es más o menos igual entonces.
Respuesta4
Para la solución más compacta que implementa todo lo anterior, creo que
FOR /F "TOKENS=1-4 DELIMS=/ " %%A IN ("%DATE%") DO FOR /F "TOKENS=1-3 DELIMS=:." %%E IN ("%TIME: =0%") DO SET logfile=C:\Temp\robolog_%%D%%C%%B_%%E%%F%%G.log
Funcionaría aquí sin agregar nuevas líneas al script. Sin embargo, quizás sea menos elegante que las soluciones de comandos múltiples.