Me deparei com um bug no meu script DOS que usa dados de data e hora para nomear arquivos. O problema é que acabei com uma lacuna porque a variável time não forneceu automaticamente zero à esquerda para hora <10. Portanto, executar> echo %time% retorna: ' 9:29:17.88'.
Alguém sabe uma maneira de preencher condicionalmente os zeros à esquerda para corrigir isso?
Mais informações: Meu comando set de nome de arquivo é:
set logfile=C:\Temp\robolog_%date:~-4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.log
que acaba sendo: C:\Temp\robolog_20100602_ 93208.log (para 9h23 da manhã).
Esta questão está relacionadaEste.
Obrigado
Responder1
Uma maneira muito simples é simplesmente substituir o espaço inicial por zero:
echo %TIME: =0%
saídas:
09:18:53,45
Responder2
Minha solução foi usar a seguinte ideia:
SET HOUR=%TIME:~0,2%
IF "%HOUR:~0,1%" == " " SET HOUR=0%HOUR:~1,1%
Responder3
Idéia semelhante aResposta de Dennis. O problema é que a largura do %time%
é sempre a mesma, então ele insere um espaço no início ao invés de retornar uma string mais curta.
Você pode se livrar disso com for
:
for /f "delims= " %x in ("%time%") do set T=0%x
O resto é mais ou menos igual, então.
Responder4
Para a solução mais compacta que implementa tudo acima, acho 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
funcionaria aqui sem adicionar novas linhas ao script. Talvez seja menos elegante do que várias soluções de comando.