Em um arquivo em lotes, eu preciso extrair um mês, dia, ano do comando date. Então, usei o seguinte, que analisa essencialmente o comando Date para extrair suas sub-strings em uma variável:
set Day=%Date:~3,2%
set Mth=%Date:~0,2%
set Yr=%Date:~6,4%
Tudo isso é ótimo, mas se eu implantar esse arquivo em lotes em uma máquina com configurações regionais / de países diferentes, ele falhará porque mês, dia e ano estão em locais diferentes.
Como extrair mês, dia e ano, independentemente do formato da data?
windows-7
windows-xp
batch
date
AngryHacker
fonte
fonte
Respostas:
Fonte: http://ss64.com/nt/syntax-getdate.html
Método 2 (cmd único)
GetDate.cmd
Método 1 (cmd + vb)
GetDate.cmd
getdate.vbs
fonte
Set _second=00%%K
ao extrairwmic
e preencher com zeros à esquerda como os outros.Windows XP e posterior
getDate.cmd
Resultado
fonte
ECHO %year%-%month%-%day%
formato compatível com ISO e sistema de arquivos (para não mencionar automaticamente as classificações por ano-mês-dia). :-).Sei que não é exatamente o que você solicitou, mas uso a porta Windows do
date
aplicativo Linux a partir de um comando dentro do arquivo em lotes e atribuo o resultado a uma variável.Ainda estou para encontrar uma maneira de obter a data de forma confiável usando apenas comandos em lote.
fonte
Use este arquivo em lotes no formato AAAA-MM-DD. Ele usa a ferramenta de instrumentação de janelas que deve estar presente em todas as versões recentes do Windows para obter uma sequência de data e hora independente das configurações regionais.
Salve em um arquivo em lotes no caminho (por exemplo) c: \ windows \ rdate.bat e acesse com um CALL RDATE.BAT para definir a (s) variável (s). Como alternativa, copie o código no seu arquivo em lotes.
Esse formato de data é adequado para nomes de arquivos e log. Classifica corretamente. A variável logtime adiciona uma variável de data e hora como AAAA-MM-DD-HHMMSS, adequada para uso no registro de atividades de arquivos em lotes com segunda precisão.
Ajuste os formatos de data (e hora) conforme desejar. REM a tela ecoa em produção. Os dois números em cada seleção de texto são o índice de caracteres iniciais baseado em zero e o número de caracteres a serem copiados, por exemplo,% datetime: ~ 0,4% utiliza uma substring de 4 caracteres começando na posição 0.
fonte
wmic os get localdatetime
Enquanto você estiver certo de que o VS 2008 gera um arquivo em lote, você pode executar praticamente qualquer programa que desejar, incluindo scripts do Powershell e outros programas.
Editar:
Aqui estão algumas perguntas semelhantes:
/programming/1051845/visual-studio-2008-professional-build-process /programming/3049369/embed-application-compilation-time-stamp
Originalmente, eu ia mudar isso para SO. . .
fonte
Você já tentou usar em
NET TIME \\%ComputerName%
vez deDATE
? Eu acho que issoNET TIME
deve fornecer os dados em um formato consistente, independentemente da localidade.fonte
net time
sempre produzo no formato m / d / aaaa. @AngryHacker, com quais configurações ele não funcionou para você?Graças ao post de Shekhar, isso funciona conforme o necessário e o preenchimento zero do tempo.
Saída: LogFile-20151113-0901.txt
fonte
Isso pode ser um pouco fora do tópico, mas aqui está um arquivo .bat que eu escrevi para meus próprios backups agendados e também chamo de ações pós-construção no visual studio. Espero que alguns achem útil.
Salve o seguinte em um arquivo .bat
fonte
%date%
e%time%
variáveis, que são locale-aware, e realmente não pode ser analisado de uma forma previsível como o OP perguntou.