День пропущен с даты - PullRequest
       8

День пропущен с даты

3 голосов
/ 25 августа 2011

См. Код партии ниже, он показывает дату и время, но день отсутствует. Как это исправить?

код:

@echo off
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set dt=%%c-%%a-%%b)
For /f "tokens=1-4 delims=:." %%a in ('echo %time%') do (set tm=%%a.%%b)
set bkupfilename=%1 %dt% %tm%.bak
echo Backing up to file: %bkupfilename%

Выход:

C:\wamp>backup.bat
Backing up to file:  -08-2011 15.49.bak

1 Ответ

1 голос
/ 25 августа 2011

при разборе вывода системных команд, таких как date /t, язык системы очень важен.

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

если вы наберете date /t на своей консоли, вы увидите вывод и поймете, почему скрипт не работает ...

  • система, в которой была написана эта команда, использовала американскиеформат даты (месяц-день-год), * ​​1017 *
  • в моей системе, которая использует европейский формат даты (день-месяц-год), скрипт работает, но инвертирует месяц и день.

Полагаю, что в вашей системе вывод команды date /t отличается из-за настроек вашей системы.Вы должны будете изменить свой сценарий, чтобы соответствовать этим настройкам.

(также имейте в виду, что этот тип сценария не переносим: другой пользователь, использующий другой языковой стандарт, столкнется с такими же проблемами)

...