48 votes

Comment puis-je récupérer la partie secondes de TIME dans cmd ?

J'essaie d'écrire un script cmd qui obtient la date et l'heure actuelles et les formate de manière à ce que sqlserver puisse les saisir sous la forme datetime .

Pour l'instant j'ai :

 @echo off
for /F "tokens=1-4 delims=/ " %%i in ('date /t') do (
set dow=%%i
set mon=%%j
set day=%%k
set yr=%%l
set mydate=%%j/%%k/%%l
)

Ceci s'imprime 22/10/2010

Je n'ai pas été en mesure de comprendre comment obtenir le temps dans un format utilisable. J'ai essayé de travailler avec time /t , mais cela ne donne que les heures et les minutes, et j'ai également besoin des secondes.

79voto

Joey Points 148544

Utilisez la pseudo-variable %TIME%

Vous pouvez également utiliser %DATE% dans le script ci-dessus.

Les deux ont les mêmes limitations, en ce sens qu'ils dépendent de votre région. Le code n'est pas portable et vous aurez des surprises dans d'autres environnements. Mais c'est ainsi que la date et l'heure dans cmd fonctionnent.

22voto

Stas Makutin Points 21

Approche alternative où %TIME% est au format H:MM:SS.FF et H dans la plage 0 - 23 et peut être représenté avec un chiffre (basé sur cet article ) :

 set YYYY=%DATE:~10,4%
set MM=%DATE:~4,2%
set DD=%DATE:~7,2%

set HH=%TIME: =0%
set HH=%HH:~0,2%
set MI=%TIME:~3,2%
set SS=%TIME:~6,2%
set FF=%TIME:~9,2%

set dirName=%YYYY%%MM%%DD%
set fileName=%dirName%\%YYYY%%MM%%DD%_%HH%%MI%%SS%.tmp

echo %fileName%

7voto

scrappythenell Points 161

Voici la façon dont j'ai procédé pour faire mon script de chauve-souris :

 @echo off
For /f "tokens=2-4 delims=/ " %%a in ("%DATE%") do (
    SET YYYY=%%c
    SET MM=%%a
    SET DD=%%b
)
For /f "tokens=1-4 delims=/:." %%a in ("%TIME%") do (
    SET HH24=%%a
    SET MI=%%b
    SET SS=%%c
    SET FF=%%d
)
echo %%DATE%%=%DATE%
echo %%TIME%%=%TIME%
echo %YYYY%-%MM%-%DD%_%HH24%-%MI%-%SS%-%FF%
echo %YYYY%/%MM%/%DD% %HH24%:%MI%:%SS%
echo %MM%/%DD%/%YYYY% %HH24%:%MI%:%SS%
echo YYYY=%YYYY%
echo MM=%MM%
echo DD=%DD%
echo HH24=%HH24%
echo MI=%MI%
echo SS=%SS%
echo FF=%FF%
pause

Vous pouvez maintenant supprimer tous les échos et les utiliser à partir de n'importe quel fichier bat en tapant :

 call SetDateTimeVariables.bat

Exemple : Création d'un répertoire d'archive et stockage de l'emplacement :

 @echo off
SETLOCAL
call test2.bat
ENDLOCAL&(
    SET ARCHIVE_DIR="archive/%YYYY%%MM%%DD%%HH24%%MI%%SS%"
)
MKDIR "%ARCHIVE_DIR%"

4voto

johny why Points 176
echo %time:~-5%

http://ss64.com/nt/syntax-substring.html

les 5 derniers caractères de %time% sont toujours seconds dot milliseconds

exemple de sortie :

 33.84

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X