Em um sistema Microsoft Windows, você pode obter a data atual usando o comando date /t
(a opção /t
impede que o comando solicite uma alteração na data) ou usando echo %date%
para exibir o conteúdo da variável de ambiente de data. No entanto, ambos exibem a data no formato DDD mm/dd/yyyy
, se o sistema usa um formato de data dos EUA para exibir datas, em que DDD é o dia da semana representado por uma abreviação de 3 caracteres, por exemplo, "Thu", mm é uma representação de dois dígitos do mês, por exemplo, "08" para agosto, dd é o dia e yyyy é o ano.
C:\>date /t
Thu 08/06/2015
C:\>echo %date%
Thu 08/06/2015
Você pode reformatar a representação da data armazenada na variável de ambiente %date%
. Por exemplo, se você quiser a data no formato aaaammdd, pode usar um comando como o abaixo, em que uma variável, YYYYMMDD
, está definida para conter a data reformatada; o nome da variável pode ser o que você quiser, por exemplo, mydate, etc.
C:\>set YYYYMMDD=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%
C:\>echo %YYYYMMDD%
20150806
Os argumentos de substring para extrair os elementos da string de data estão no formato %variable:~startposition,numberofchars%
, portanto, se o "T" na quinta-feira na string "Qui 08/06/2015" estiver na posição 0, o 10º caractere será o "2" de 2015 e eu quero 4 personagens, ou seja, "2015", então %DATE:10,4%
vai me dar esses personagens. Ou você também pode pensar no primeiro número como o número de caracteres a serem ignorados, ou seja, %variable:~num_chars_to_skip,numberofchars%
. Em seguida, posso acrescentar %DATE:~4,2%
para obter "08" para o mês seguido por %DATE:~7,2%
para extrair o dia, ou seja, "06" se a data for 6 de agosto de 2015 representada na variável %DATE%
como "Qui 08 / 06/2015 ". Referência com links adicionais
Se o seu arquivo de lote puder ser usado em sistemas em outros países, talvez seja necessário fazer ajustes para um estilo diferente de exibição de data diferente de mês / dia / ano se você estiver reformatando a data em vez de exibi-la apenas em qualquer formato é o padrão para o sistema. Se você emitir um comando reg query
, poderá ver o formato padrão do sistema. Por exemplo:
C:\>reg query "HKCU\Control Panel\International" /v sShortDate
HKEY_CURRENT_USER\Control Panel\International
sShortDate REG_SZ M/d/yyyy
No exemplo acima, vejo que o sistema está usando o formato mês / dia / ano. A configuração para o país pode ser vista com reg query "HKCU\Control Panel\International" /v sCountry
, mas isso pode não ser uma coisa com a qual você deve se preocupar se souber que os sistemas são locais usando uma representação de data padrão.
Para obter maneiras de obter a data de ontem, há várias postagens do Stack Overflow, incluindo a mencionada por DavidPostill:
Como obter a data de ontem no arquivo de lote?