Как определить формат даты в команде 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