Пакетные файлы Windows 10 основаны на команде DATE, как использовать ее в более ранних версиях Windows

Пакетные файлы Windows 10 основаны на команде DATE, как использовать ее в более ранних версиях Windows

Я работаю на двух (виртуальных) машинах:

  • Во-первых, это машина с Windows 10.
  • Во-вторых, это машина с Windows 7.

В обоих случаях форматы коротких дат одинаковы: dd.MM.yyyy
В обоих случаях я запускаю один и тот же пакетный файл на основе DATEкоманды.

У меня есть различия в результатах, связанные с результатами команды DATE:

  • В Windows 10:The current date is: st 22.03.2017
  • В Windows 7:The current date is: 22.03.2017

Как видите, разница обусловлена ​​наличием сегодняшнего названия ( stэто сокращение от чешского слова Wednesday).

Система Windows 10 является основной, поэтому мой вопрос: как мне изменить систему Windows 7, чтобы включить первые две буквы названия дня?

В качестве тестов я уже попробовал следующее для короткого формата даты:

dd dd.MM.yyyy   // this is better, the length of the format is good,
                   but it does not start with the initials of the day's name.
dddd dd.MM.yyyy // this starts with the day's name, but completely, 
                   and I only want the first two letters.

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

  1. При работе с DATEкомандой командной строки (там мне нужен формат типа
    xx dd.MM.yyyy(каким xxбы он ни был) для дальнейшей обработки
  2. В ходе следующего echo: for /r %DIRECTORY% %I in ("*.*") do echo %~tfI Идея состоит в том, чтобы показать временную метку и имя файла, что-то вроде:
    22.03.2016 13:50 <filename>(без xx)

решение1

В Windows 7 необходимо использовать dddаналогичный формат, состоящий из 3 символов, а не из 2.

Так что вы можете использоватьддд дд.ММ.гггг. Это поддерживаемый формат.

Чтобы получить 2 символа, можно удалить один с помощью пакетного файла.

решение2

Какой беспорядок, но я думаю, что нашел решение этой проблемы:

Суть в следующем: в Windows 10, даже при наличии простого формата даты (например dd.MM.yyyy, ), date /Tкомандная строка добавляет первые символы дня, поэтому мы получаем следующее:

date /T
st 22.03.2017

И мои коллеги построили свои пакетные файлы вокруг присутствия этих символов "st". Запуск этих пакетных файлов на более низких версиях Windows приводит к упомянутым проблемам.

В начале пакетных файлов я добавил строку:

DATE=xx %DATE%

(признаю, очень по-детски)
Это позволяет пакетным файлам работать на моем компьютере с Windows 7.
Чтобы это работало на обеих системах, мне просто нужно добавить проверку на платформе, что-то вроде:

set WINDOWS_10=%ver | findstr /C:"Version 10"%
if "WINDOWS_10"=="" (
  set DATE=xx %DATE%)

Я пока не проверял это на ПК с Windows 10, но думаю, что это сработает.

Связанный контент