Я хотел бы получить текущую системную дату и время с помощью командной строки.
Как я заставляю дату быть в определенном формате, MM-DD-YYYY HH:MIN AM/PM
?
Очень легкий получить дату и время, на самом деле:
set Year=
for /f "skip=2" %%x in ('wmic Path Win32_LocalTime get Year^,Month^,Day^,Hour^,Minute^,Second /Format:List') do (
if not defined Year set %%x
)
Я принимаю местное время здесь. Если Вы нуждаетесь в UTC, адаптируете его соответственно.
Ваш формат делает вещи более сложными. Извинения, если я получаю что-то не так здесь, я не знаком с,/пополудни форматы.
if %Hour% LSS 12 (
set ampm=AM
if %Hour%==0 set Hour=12
) else (
set ampm=PM
set /a Hour-=12
)
Нам нужны некоторые, продвижение обнуляет:
if %Month% LSS 10 set Month=0%Month%
if %Day% LSS 10 set Day=0%Day%
if %Minute% LSS 10 set Minute=0%Minute%
if %Hour% LSS 10 set Hour=0%Hour%
Затем пора собрать части:
set Timestamp=%Month%-%Day%-%Year% %Hour%:%Minute% %ampm%
(Просто случайное примечание: С какой стати Вы хотели бы тот формат метки времени?)
Инструменты командной строки Unix часто более мощны, чем их дубликаты окон.
Но даже с Windows можно использовать некоторые портированные инструменты командной строки. Например, бесплатный пакет UnxTools:
http://sourceforge.net/projects/unxutils/
Вот ссылка на загрузку:
http://sourceforge.net/projects/unxutils/files/unxutils/current/UnxUtils.zip/download
Просто возьмите date.exe из архива (это находится в подпапке usr\local\wbin), и поместите его в папку, которую Вы также имеете в своей среде ПУТИ.
Затем можно назвать date.exe с параметрами как это:
date.exe +"%m-%d-%y %l:%M %p"
Если Вы хотите видеть весь возможный форматировать шаблоны, просто звонят
date.exe --help
Заботьтесь для включения ".exe" расширения. Если Вы оставите его затем, то окна назовут внутреннюю команду даты.
:: construct date and time strings
:: "MM-DD-YYYY HH:MIN AM/PM"
for /f "tokens=1,2" %%u in ('date /t') do set d=%%v
for /f "tokens=1" %%u in ('time /t') do set t=%%u
for /f "tokens=2" %%u in ('time /t') do set a=%%u
if "%t:~1,1%"==":" set t=0%t%
set datestr=%d:~0,2%-%d:~3,2%-%d:~6,4% %t:~0,2%:%t:~3,2% %a%
Я использую изменения этого блока кода почти в каждом .bat файле, который я пишу.
Используйте "%datestr %" для получения строки даты, т.е.:
повторите %datestr %
Посмотрите вопрос о Переполнении стека, Как получить УНИВЕРСАЛЬНУЮ метку времени пакетного файла Windows для примера того, как получить время даты, устанавливая, который независим от региональных настроек. Назвать сценарий,
c:\> cscript //nologo myscript.vbs
Используйте a for
цикл для получения вывода в случае необходимости.