Как я могу получить часть времени TIME в cmd? - PullRequest
32 голосов
/ 22 ноября 2010

Я пытаюсь написать сценарий cmd, который получает текущую дату и время и форматирует его так, чтобы sqlserver мог ввести его как datetime.

Пока у меня есть:*

@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
)

Это распечатано 22.10.2010

Я не смог выяснить, как перевести время в пригодный для использования формат.Я пытался работать с time /t, но он дает только часы и минуты, и мне также нужны секунды.

Ответы [ 4 ]

52 голосов
/ 22 ноября 2010

Используйте псевдопеременную %TIME%.

Вы также можете использовать %DATE% в приведенном выше сценарии.

Оба имеют одинаковые ограничения в том, что они зависят от вашей локали. Код не переносим, ​​и вас ждут сюрпризы в других средах. Но так работает дата и время в cmd.

15 голосов
/ 06 февраля 2014

Альтернативный подход, когда% TIME% находится в формате H: MM: SS.FF и H в диапазоне 0–23 и может быть представлен одной цифрой (на основе этой статьи ):

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%
7 голосов
/ 04 марта 2012

Вот как я делал свой сценарий с битой:

@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

Теперь вы можете удалить все эхо и использовать его из любого файла bat, набрав:

call SetDateTimeVariables.bat

Пример: создание архивной директории и сохранение местоположения:

@echo off
SETLOCAL
call test2.bat
ENDLOCAL&(
    SET ARCHIVE_DIR="archive/%YYYY%%MM%%DD%%HH24%%MI%%SS%"
)
MKDIR "%ARCHIVE_DIR%"
1 голос
/ 21 сентября 2016
echo %time:~-5%

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

последние 5 символов% времени% всегда seconds dot milliseconds

пример вывода:

33.84
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...