Estou trabalhando em duas máquinas (virtuais):
- Primeiro é uma máquina Windows 10
- O segundo é uma máquina com Windows 7
Em ambos, os formatos curtos de data são iguais: dd.MM.yyyy
em ambos, estou executando o mesmo arquivo em lote, com base no DATE
comando.
Estou tendo diferenças nos resultados, relacionadas ao resultado dos resultados do DATE
comando:
- No Windows 10:
The current date is: st 22.03.2017
- No Windows 7:
The current date is: 22.03.2017
Como você pode ver, a diferença se deve à presença do nome de hoje ( st
é uma abreviação da palavra tcheca para Wednesday
).
O sistema Windows 10 é o mestre, então minha pergunta: como posso alterar o sistema Windows-7 para incluir as duas primeiras letras do nome do dia?
Como testes, eu já tentei o seguinte para um formato de data curto:
dd dd.MM.yyyy // this is better, the length of the format is good,
but it does not start with the initials of the day's name.
dddd dd.MM.yyyy // this starts with the day's name, but completely,
and I only want the first two letters.
Enquanto isso, observei o problema: o formato da data parece ser usado em dois lugares:
- Enquanto trabalhava com o
DATE
comando commandline (lá eu preciso de um formato comoxx dd.MM.yyyy
(o que quer quexx
seja)) para processamento adicional - Durante o seguinte
echo
:for /r %DIRECTORY% %I in ("*.*") do echo %~tfI
A idéia é mostrar um carimbo de data e hora e o nome do arquivo, algo como:
22.03.2016 13:50 <filename>
(semxx
)
windows-7
windows-10
command-line
date
regional-settings
Dominique
fonte
fonte
C
e será completamente independente das configurações regionais, ou poderia ser feito em um arquivo em lotes um tanto complexo que manipula o conteúdo do `% DATE % variável.wmic
ou PowerShell para manipular a data de maneira independente das configurações de local, regional e idioma. Veja minha resposta Script em lote (cmd), resultando no formato DD-MM-AAAA_semanal, para obter algumas dicas.Date
, mesmo no diretório em que acabei de compilar "date.exe", ele continua executando oDATE
comando commandline .CzDate.exe
ou algo semelhante?cmd
Nodate
comando é um shell built-in, por isso será sempre escolhido em detrimento de um link externodate.exe
, a menos que você adicionar um caminho à chamada, por exemplo.\date
; Como alternativa, para uso em linha de comando (não em um arquivo em lotes), você pode definir um alias, por exemplodoskey date=.\date.exe
.Respostas:
No Windows 7, você deve usar
ddd
um formato semelhante, com 3 caracteres e não 2.Então você pode usar o ddd dd.MM.aaaa . Esse é o formato suportado.
Uma maneira de obter 2 caracteres seria remover um com um arquivo em lotes.
fonte
dd.MM.yyyy
resultado da linha de comando DATE:st 22.03.2017
=> Como eles conseguiram obter esse resultadost
?Que bagunça, mas acredito que encontrei uma solução para o problema:
O ponto é o seguinte: No Windows 10, mesmo tendo um formato de data simples (como
dd.MM.yyyy
), adate /T
linha de comando adiciona os primeiros caracteres do dia, para obter o seguinte:E meus colegas construíram seus arquivos de lote em torno da presença desses "st" personagens. A execução desses arquivos em lote nas versões inferiores do Windows fornece os problemas mencionados.
No início dos arquivos em lotes, adicionei a linha:
(muito infantil, admito)
Isso faz com que os arquivos em lote funcionem no meu computador com Windows 7.
Para fazê-lo funcionar nos dois sistemas, basta adicionar uma verificação na plataforma, algo como:
Ainda não o verifiquei no Windows 10, mas acredito que isso funcionará.
fonte
set Windows_10=
comando não funciona: você precisaver | findstr /C:"Version 10"
, seguido deif errorlevel 1 set DATE=xx %DATE%
. Isso afetará o que%DATE%
retorna, mas odate
próprio comando não será afetado. Você também deveset DATE=
primeiro remover a variável local e novamente antes de sair, para não afetar outros arquivos em lotes chamados da mesmacmd
instância.cmd
instância.