Résultat différent de prog en ligne de commande lorsqu'il est exécuté par le planificateur de tâches

1

J'appelle le programme suivant depuis un autre prog en ligne de commande ...

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

Lorsque je lance le programme à partir de la ligne de commande, ymd est renvoyé sous le nom "20160501", ce que je souhaite.

Lorsque j'exécute le programme principal à partir du Planificateur de tâches, le résultat obtenu est "1605".

Des idées?

SteveHMTM
la source
Je suppose que l'utilisateur qui exécute la commande via le planificateur de tâches dispose d'un environnement différent de celui de l'utilisateur de bureau. Avez-vous essayé de planifier la tâche sous votre propre utilisateur?
Frank Thomas
avez-vous essayé simplement d'exécuter date /t, puis la commande pause et comparez les formats de fichier batch dans cmd et de planificateur de tâches
barlop

Réponses:

0

Je voudrais avoir la date formatée comme 20160501

Lorsque je lance le programme à partir de la ligne de commande, ymd est renvoyé sous le nom "20160501", ce que je souhaite.

Lorsque j'exécute le programme principal à partir du Planificateur de tâches, le résultat obtenu est "1605".

L'utilisation %date%d'une solution dépend des paramètres régionaux, régionaux et linguistiques du système d'exploitation. Cela explique pourquoi vous obtenez différents résultats.

En wmicrevanche, l’utilisation fonctionne indépendamment des paramètres régionaux, de la langue ou du format de date choisi par l’utilisateur (Panneau de configuration / Régional).

Le fichier de commandes suivant utilise wmicpour extraire la date et l'heure (locale) au format spécifié par l'OP, afin de ne pas subir l'inconvénient d'une solution utilisant %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

Remarques:

  • Le fichier de commandes ci-dessus est une version modifiée de l'exemple dans getdate .
  • Il est facilement modifié pour répondre à vos besoins exacts.
  • Si vous décidez que vous avez également besoin de l'heure (heures, minutes et secondes), voyez ma réponse. Imprimer date-heure dans Windows cmd

Sortie :

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

F:\test>GetDate
20160501

F:\test>

Lectures complémentaires

  • Index AZ de la ligne de commande Windows CMD - Une excellente référence pour tout ce qui concerne la ligne de commande cmd de Windows.
  • for / f - Boucle la commande en regard des résultats d’une autre commande.
  • getdate - Affiche la date et l'heure indépendamment de l' environnement local du système d'exploitation, de la langue ou du format de date choisi par l'utilisateur (Panneau de configuration / Régional).
  • variables - Extrait une partie d'une variable (sous-chaîne).
  • wmic - Commande d'instrumentation de gestion Windows.
DavidPostill
la source