Os arquivos em lote do Windows-10 são baseados no comando DATE, como usar em versões inferiores do Windows


2

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 DATEcomando.

Estou tendo diferenças nos resultados, relacionadas ao resultado dos resultados do DATEcomando:

  • 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:

  1. Enquanto trabalhava com o DATEcomando commandline (lá eu preciso de um formato como
    xx dd.MM.yyyy(o que quer que xxseja)) para processamento adicional
  2. 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>(sem xx)

Não é possível ter 2 dias úteis de caracteres no Windows 7.
DavidPostill

Vejo duas opções: (1) use o formato de dia longo, mas altere os nomes dos dias para seus equivalentes curtos, embora isso signifique que você nunca verá os verdadeiros nomes dos dias longos; (2) escreva seu próprio programa para relatar a data: isso seria apenas algumas linhas Ce 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.
AFH

Use wmicou 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.
DavidPostill

@ AFH: infelizmente, mesmo escrevendo um pequeno programa não resolve o problema: eu precisaria chamar esse programa de "date.exe", mas quando inicio Date, mesmo no diretório em que acabei de compilar "date.exe", ele continua executando o DATEcomando commandline .
Dominique

Por que você precisa dar o mesmo nome? Por que não chamá-lo CzDate.exeou algo semelhante? cmdNo datecomando é um shell built-in, por isso será sempre escolhido em detrimento de um link externo date.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 exemplo doskey date=.\date.exe.
AFH

Respostas:


1

No Windows 7, você deve usar dddum 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.


Por favor, leia a pergunta novamente com atenção. Sua resposta não responde à pergunta original. Ele quer adicionar à máquina Windows 7 e não removê-la da máquina Windows 10.
DavidPostill

Parece que o requisito é o contrário. Eu atualizei.
Overmind

Talvez isso possa ser útil, afinal: você tem alguma idéia de como alguém conseguiu fazer isso no Windows 10? Formato de data curta: dd.MM.yyyyresultado da linha de comando DATE: st 22.03.2017=> Como eles conseguiram obter esse resultado st ?
Dominique

Você não terá st se apenas modificá-lo para dd.MM.aaaa. Para adicionar novamente o st, redefinir deve estar no formato dd dd.MM.aaaa.
Overmind 23/03

0

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), a date /Tlinha de comando adiciona os primeiros caracteres do dia, para obter o seguinte:

date /T
st 22.03.2017

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:

DATE=xx %DATE%

(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:

set WINDOWS_10=%ver | findstr /C:"Version 10"%
if "WINDOWS_10"=="" (
  set DATE=xx %DATE%)

Ainda não o verifiquei no Windows 10, mas acredito que isso funcionará.


11
Não consigo mais verificar o Win7, pois atualizei todos os meus sistemas W7, mas no Win10 seu set Windows_10=comando não funciona: você precisa ver | findstr /C:"Version 10", seguido de if errorlevel 1 set DATE=xx %DATE%. Isso afetará o que %DATE%retorna, mas o datepróprio comando não será afetado. Você também deve set DATE=primeiro remover a variável local e novamente antes de sair, para não afetar outros arquivos em lotes chamados da mesma cmdinstância.
AFH

Não os adiciona se você alterou suas configurações.
Overmind 23/03

@ AFH: obrigado pelo aviso, mas os arquivos em lote devem ser usados ​​no agendador de tarefas, portanto nunca haverá outros programas a serem executados na mesma cmdinstância.
Dominique
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.