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.
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.
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%
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%"
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