Resultado diferente do prog da linha de comando quando executado pelo Agendador de Tarefas

1

Eu chamo o seguinte programa de dentro de outro prog de linha de comando ...

:: NT_getdate.cmd    return yumd-date in var='ymd'
@echo on
setlocal
for /F "tokens=2,3,4 delims=/ " %%g in ('echo.^|date /t') do (
    set dd=%%g
    set mm=%%h
    set yy=%%i
)
endlocal& set ymd=%yy%%mm%%dd%

Quando executo o programa a partir da linha de comando, o ymd é retornado como "20160501", que é o que eu quero.

Quando executo o programa principal do Agendador de Tarefas, o resultado é "1605"

Alguma idéia?

    
por SteveHMTM 01.05.2016 / 08:26

1 resposta

0

Gostaria de ter a data formatada como 20160501

When I run the progam from within command line ymd is returned as "20160501" which is what I want.

When I run the top program from Task Scheduler the result I get is "1605"

Usar o %date% para fornecer uma solução depende das configurações de Localidade do Sistema, Regional e Idioma. Isso explica por que você está obtendo saídas diferentes.

O uso de wmic , por outro lado, funciona de maneira independente do idioma local, idioma ou formato de data escolhido pelo usuário (Painel de Controle / Regional).

O arquivo de lote a seguir usa wmic para recuperar a data e a hora (local) no formato especificado do OP, portanto, não sofre a desvantagem de uma solução usando %date% .

GetDate.cmd:

@echo off
setlocal
rem use findstr to strip blank lines from wmic output
for /f "usebackq skip=1 tokens=1-3" %%g in ('wmic Path Win32_LocalTime Get Day^,Month^,Year ^| findstr /r /v "^$"') do (
  set _day=00%%g
  set _month=00%%h
  set _year=%%i
  )
  rem pad with leading zeros
  set _month=%_month:~-2%
  set _day=%_day:~-2%
  set _date=%_year%%_month%%_day%
  echo %_date%
endlocal

Notas:

  • O arquivo em lote acima é uma versão modificada do exemplo em getdate .
  • É facilmente ajustado para atender às suas necessidades exatas.
  • Se você decidir que também precisa do tempo (horas, minutos e segundos), consulte minha resposta Imprimir datetime no Windows cmd

Saída :

F:\test>date /t
01/05/2016

F:\test>GetDate
20160501

F:\test>

Leitura Adicional

  • Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
  • para / f - Comando Loop contra os resultados de outro comando.
  • getdate - Exibe a data e a hora independentemente da localidade do SO, idioma ou formato de data escolhido pelos usuários (Painel de Controle / Regional ).
  • variáveis - Extrai parte de uma variável (substring).
  • wmic - Comando de instrumentação de gerenciamento do Windows.
por 01.05.2016 / 10:31