web-dev-qa-db-fra.com

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

J'essaie d'écrire un script cmd qui récupère la date et l'heure actuelles et le formate de manière à ce que sqlserver puisse le saisir en tant que datetime.

Jusqu'à présent, 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 imprime 10/22/2010

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

28
chama

Utilisez la pseudo-variable %TIME%.

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

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

47
Joey

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%
13
Stas Makutin

Voici comment j'ai fait mon script 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 l'utiliser à partir de n'importe quel fichier bat en tapant:

call SetDateTimeVariables.bat

Exemple: Création d'un répertoire d'archivage 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%"
7
ScrappyDev
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
0
johny why