Как определить формат даты в команде Windows dir?

Команда dir в Windows отображает даты в формате, который зависит от настроек операционной системы.

Например, когда я запускаю "dir" из командной строки на моем компьютере, дата отображается как "09/04/2015". Когда я запускаю ту же команду на другом сервере, я вижу "07/Aug/2015". Я предполагаю, что в зависимости от настроек операционной системы возможно много разных форматов.

Мне нужен способ надежного анализа дня, месяца и года из строки даты, возвращенной командой 'dir', которая будет работать в любой операционной системе Windows начиная с (и включая) Windows XP.

Кто-нибудь знает, как заставить команду 'dir' отображать даты в определенном формате?

Или кто-нибудь знает, как определить (из командной строки) формат, в котором команда 'dir' будет отображать даты?

1 ответ

Решение не идеальное, и я советую не применять его, если в этом нет особой необходимости.

Когда вы меняете формат даты, он устанавливает значение реестра

HKCU\Control Panel\International-> sShortDate REG_SZ <format_Of_date> где format_of_date - формат, выбранный пользователем.

Теперь, если вы измените это значение в свой удобный формат и сохраните его, dir Команда даст вам ожидаемый формат в результате.

Я сказал, что это не рекомендуется, потому что изменение пользовательских настроек на компьютере пользователя никогда не бывает хорошим. Чтобы избежать этого, вы можете сохранить начальное значение sShortDate до изменения и установите это начальное значение после вашей реализации dir CMD.

Вы можете проверить, используя этот пакетный файл::

reg export "HKEY_CURRENT_USER\Control Panel\International" C:\DateFormat.reg
reg add "HKEY_CURRENT_USER\Control Panel\International" /f /v "sShortDate" /t 
REG_SZ /d "yyyy-MM-dd"
;; dir output always with "yyyy-MM-dd" date format
dir > C:\dir.txt
reg import C:\DateFormat.reg
del C:\DateFormat.reg
pause
Другие вопросы по тегам