Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Команды в Win (date /T). Выбор формата даты.

Ответить
Настройки темы
CMD/BAT - [решено] Команды в Win (date /T). Выбор формата даты.

Новый участник


Сообщения: 32
Благодарности: 0

Профиль | Отправить PM | Цитировать


Привет всем!
Такой вопрос, помогите разобраться, пожалуйста.
Ежедневно по крону отрабатывает bat-файл, который создаёт каталог с текущей датой:
mkdir c:\%DATE%
Как положено, появляется папочка c:\04.03.2009
На большинстве серверов (win2003) отрабатывает прекрасно, но попалась машина, которая вместо каталога с датой, создала:
c:\Ср
И действительно, в командной строке, команда: echo %DATE%, или DATE /T, выводит:
Ср 04.03.2009

В языковых стандарты (панели управления), формат даты указан, как dd.MM.yyyy.
Где указывается эта настройка? Подскажите пожалуйста, кто знает.

Отправлено: 10:52, 04-03-2009

 

Старожил


Сообщения: 391
Благодарности: 10

Профиль | Отправить PM | Цитировать


gora,
Цитата:
Может пригодится.
Важно: создаваемый батником файл d_t.com является 16-разрядным приложением и не сможет работать на х64 ОС.
А кто-нибудь что-то подобное для Х64 знает?

Отправлено: 18:21, 24-12-2018 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата tarakan1983:
А кто-нибудь что-то подобное для Х64 знает? »
И для x86, и для x64:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq skip=1 delims=" %%i in (
	`wmic.exe OS get LocalDateTime`
) do for /f "tokens=1" %%j in ("%%~i") do (
	set sDateTime=%%j
	set sYear=!sDateTime:~0,4!
	set sMonth=!sDateTime:~4,2!
	set sDay=!sDateTime:~6,2!
	set sHour=!sDateTime:~8,2!
	set sMinute=!sDateTime:~10,2!
	set sSecond=!sDateTime:~12,2!
)

echo Year:   %sYear%
echo Month:  %sMonth%
echo Day:    %sDay%
echo Hour:   %sHour%
echo Minute: %sMinute%
echo Second: %sSecond%

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:09, 24-12-2018 | #12


Ветеран


Contributor


Сообщения: 2714
Благодарности: 1688

Профиль | Отправить PM | Цитировать


Если извратить код Iska, чтобы без восклицаний:
Код: Выделить весь код
@Echo Off
cls
	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "sDateTime=%%d"

	set "sYear=%sDateTime:~0,4%"
	set "sMonth=%sDateTime:~4,2%"
	set "sDay=%sDateTime:~6,2%"
	set "sHour=%sDateTime:~8,2%"
	set "sMinute=%sDateTime:~10,2%"
	set "sSecond=%sDateTime:~12,2%"

	echo Year:   %sYear%
	echo Month:  %sMonth%
	echo Day:    %sDay%
	echo Hour:   %sHour%
	echo Minute: %sMinute%
	echo Second: %sSecond%
exit /b 0

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:51, 24-12-2018 | #13


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
for /f "tokens=1* delims==" %%a in ('"wmic path win32_localtime get Day,Month,Year,Hour,Minute,Second /value|find "^=""') do set "%%a=0%%b"

echo Year:   %Year:~-5%
echo Month:  %Month:~-3%
echo Day:    %Day:~-3%
echo Hour:   %Hour:~-3%
echo Minute: %Minute:~-3%
echo Second: %Second:~-3%
pause
(учтено добавление ведущего нуля на всякий случай кому вдруг надо)
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:47, 25-12-2018 | #14


Новый участник


Сообщения: 4
Благодарности: 2

Профиль | Отправить PM | Цитировать



Утилита date.zip (38.5 КБ) из комплекта UnxUtils
позволяет получить данные о дате времени в любом формате
независимо от региональных настроек.
Примеры использования:

Показать текущие ГГГГ-ММ-ДД
Код: Выделить весь код
date.exe +"%%Y-%%m-%%d"
(%%y (строчная) - Краткий двузначный формат года)

Записать дату/время в переменную в нужном формате
Код: Выделить весь код
for /f "tokens=*" %%i in ('date.exe +"%%Y-%%m-%%d %%H:%%M:%%S"') do set timestamp=%%i
echo %timestamp%
Записать текущие значения даты/времени в переменные
Код: Выделить весь код
for /f "tokens=1,2,3,4,5,6* delims=," %%i in (
'date.exe +"%%Y,%%m,%%d,%%H,%%M,%%S"') do (
set yy=%%i& set mo=%%j& set dd=%%k& set hh=%%l& set mm=%%m& set ss=%%n)
echo %yy% %mo% %dd%
Записать значения даты/времени файла в переменные
Код: Выделить весь код
for /f "tokens=1,2,3,4,5,6* delims=," %%i in (
'date.exe -r test.txt +"%%Y,%%m,%%d,%%H,%%M,%%S"') do (
set yy=%%i& set mo=%%j& set dd=%%k& set hh=%%l& set mm=%%m& set ss=%%n)
echo %yy% %mo% %dd%
[+] Для сравнения значений переменных месяца, дня и т.д. необходимо удалить ведущие нули
Код: Выделить весь код
for %%V in (%%m %%d) do (set /a %%V=1!%%V!-100)
Теперь не будет возникать ошибок при мат. операциях (set /a=...) с этими переменными

Последний раз редактировалось fhrbc, 08-02-2019 в 06:06.


Отправлено: 13:08, 05-02-2019 | #15


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


fhrbc, для получения даты/времени в едином формате у нас уже есть Wbem (wmic.exe).
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:30, 05-02-2019 | #16


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1176
Благодарности: 490

Профиль | Отправить PM | Цитировать


Цитата Iska:
для получения даты/времени в едином формате »
есть ещё интересные варианты... помимо wmic
Код не совсем мой, откуда стырена идея, уже не помню, но работает почти на всех windows:
Код: Выделить весь код
@echo off
rem получаем дату в формате не зависящем от версии ОС
echo.>"%temp%\~.ddf"
>nul makecab /d RptFileName="%temp%\~.rpt" /d InfFileName="%temp%\~.inf" -f "%temp%\~.ddf"
for /f "tokens=4,5,6,7,8,9 delims=: " %%a in ('type "%temp%\~.rpt"') do (
	if not defined m call :month %%a
	if not defined current-date (call set "current-date=%%f-%%m%%-%%b")
	if not defined current-time (call set "current-time=%%c:%%d:%%e")
)
del /q "%temp%\~.*"
echo. "%current-date%" "%current-time%"
pause&exit

rem перевод формата MMM -> MM
:month
if "%1"=="Jan" set "m=01"
if "%1"=="Feb" set "m=02"
if "%1"=="Mar" set "m=03"
if "%1"=="Apr" set "m=04"
if "%1"=="May" set "m=05"
if "%1"=="Jun" set "m=06"
if "%1"=="Jul" set "m=07"
if "%1"=="Aug" set "m=08"
if "%1"=="Sep" set "m=09"
if "%1"=="Oct" set "m=10"
if "%1"=="Nov" set "m=11"
if "%1"=="Dec" set "m=12"
exit /b

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:53, 05-02-2019 | #17


(*.*)


Сообщения: 36498
Благодарности: 6676

Профиль | Сайт | Отправить PM | Цитировать


Все что угодно, лишь бы не изучать пошик
https://www.outsidethebox.ms/14845/#Get-Date

Отправлено: 19:04, 05-02-2019 | #18


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1176
Благодарности: 490

Профиль | Отправить PM | Цитировать


Цитата Vadikan:
Все что угодно, лишь бы не изучать пошик »
это да, такое злобное поделие микрософт вообще ни в коем случае нельзя изучать, оно изменит все законы мироздания и Земля закрутится в другую сторону...

Код: Выделить весь код
'{0:g.yyyy.MM.dd HH:mm:ss}' -f (get-date)
Код: Выделить весь код
PS_5.1> '{0:g.yyyy.MM.dd HH:mm:ss}' -f (get-date)
наша эра.2019.02.05 22:20:19
PS_5.1> powershell -v 2.0
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

PS_2.0> '{0:g.yyyy.MM.dd HH:mm:ss}' -f (get-date)
A.D..2019.02.05 22:22:32
PS_2.0>

-------
scio me nihil scire. Ѫ


Отправлено: 19:21, 05-02-2019 | #19


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


YuS_2, а у меня на 5.1 и там, и там A.D. (Windows 7 SP1 x64, CurrentCulture — 1049, ru-RU, Русский (Россия)):
Скрытый текст
Код: Выделить весь код
PS C:\> powershell.exe -v 2.0
Windows PowerShell
(C) Корпорация Майкрософт, 2009. Все права защищены.

PS C:\> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1


PS C:\> '{0:g.yyyy.MM.dd HH:mm:ss}' -f (Get-Date)
A.D..2019.02.05 20:06:09
PS C:\> exit
PS C:\> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      14409  1005


PS C:\> '{0:g.yyyy.MM.dd HH:mm:ss}' -f (Get-Date)
A.D..2019.02.05 20:06:23
PS C:\>

Отправлено: 20:10, 05-02-2019 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Команды в Win (date /T). Выбор формата даты.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - [решено] Invalid argument to date encode ПЕПЕЛАЦ13 Microsoft Windows 2000/XP 9 03-12-2008 15:05
Разное - [решено] ковычки в формате поля Date в ворде pva Программирование и базы данных 4 11-09-2008 13:04
Изменение формата даты Ilya S Программное обеспечение Windows 2 12-11-2007 11:13
[решено] Смена формата Даты в Региональных Настройках. Loki3D Microsoft Windows 2000/XP 2 19-10-2006 13:42
Date /t mihmih Microsoft Windows NT/2000/2003 1 23-01-2006 10:33




 
Переход