Apenas corte os caracteres que você não precisa depois:
set _time=%_time:~0,-3%
Ou obtenha o resultado completo e desejado diretamente assim:
set _time=%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%
Estou escrevendo um script para compactar RAR meus arquivos e nomeio o resultado com o registro de data e hora.
Eu uso a variável de ambiente TIME
. Eu também faço
set _time=%TIME::=.%'
para usar apenas caracteres permitidos no nome do arquivo.
Como faço para me livrar da parte de milissegundos do %TIME%
, por ex. 16:35:42.07
O caminho fácil seria se o campo de milissegundos fosse sempre dois dígitos: %_TIME:~0,-3%
Traduz para cortar os primeiros 0 caracteres e depois manter os caracteres (tamanho da string - 3). Qual iria cortar o .07
no seu exemplo. Na verdade, isso deve sempre funcionar: eu acabei de perceber que você está usando a variável% time% (me ensina a ler), que deve sempre retornar com um valor 'ms' de dois dígitos.
Se seus milissegundos puderem ter um número diferente de dígitos (por exemplo, 0.1
em vez de 0.10
), será necessário algum tipo de comando de pesquisa de string. E aqui está:
Ok, isso parece hackish .. mas é a linha de comando do Windows, então ei. Isso reduzirá o ponto e tudo depois dele, por isso funcionará independentemente de quantos dígitos de precisão seu valor ms for (por exemplo, 0.1
em vez de 0.10
).
SetLocal EnableDelayedExpansion
set _time=%time%_EndOfStringMarker
set __DotToEnd=%_time:*.=%
set _time=!_time:%__DotToEnd%=!
set _time=%_time:.=%
EndLocal && set _time=%_time%
Verifique se há apenas um ponto no seu tempo quando isso é usado.
Tentando explicar agora. Claro, você pode usá-lo e poupar a dor de cabeça de tentar entender.
07
) ocorre em outro lugar, por exemplo o valor de segundos, que não será substituído. Fonte para o desajeitado apara final: link
Você pode usar a sintaxe da variável:
@echo off
set hrs=%time:~0,2%
set mns=%time:~3,2%
set scs=%time:~6,2%
set mls=%time:~9,2%
set nmt=%time:~0,8%
Use% hrs% para as horas
Use% mns% para os minutos
Use% scs% para os segundos
Use% mls% para os milissegundos
Use% nmt% pelo tempo sem os milissegundos
Tags command-line windows-7