при разборе вывода системных команд, таких как date /t
, язык системы очень важен.
В первой строке скрипта выдается команда date /t
и анализируется ее вывод.он разделяет строку по указанным разделителям, которые являются пробелом
(отсюда пробел до конца "
) и косой чертой /
.Затем он берет найденные элементы со второго по четвертый и присваивает их переменным %a
, %b
и %c
.
если вы наберете date /t
на своей консоли, вы увидите вывод и поймете, почему скрипт не работает ...
- система, в которой была написана эта команда, использовала американскиеформат даты (месяц-день-год), * 1017 *
- в моей системе, которая использует европейский формат даты (день-месяц-год), скрипт работает, но инвертирует месяц и день.
Полагаю, что в вашей системе вывод команды date /t
отличается из-за настроек вашей системы.Вы должны будете изменить свой сценарий, чтобы соответствовать этим настройкам.
(также имейте в виду, что этот тип сценария не переносим: другой пользователь, использующий другой языковой стандарт, столкнется с такими же проблемами)