Создание управляемых файлов журналов в задании пакетного файла - PullRequest
0 голосов
/ 16 марта 2011

Я выполняю задание robocopy через пакетный файл, запуск которого запланирован каждый час.Я использую следующие переключатели:

Robocopy \ имя_сервера \ share D: \ somedir / E / R: 5 /Log+:D:\Logs\CopyLog.txt

Работает добросовестнов течение долгого времени, но это столкнулось с загадкой этим утром.Я пошел, чтобы проверить файл журнала, и был удивлен, обнаружив, что его размер вырос до 280 МБ.

Тогда у меня вопрос: как я могу изменить свой пакетный файл, чтобы записывать более управляемые файлы журнала?Я думаю, что имеет смысл добавить период, за который он представлен. То есть: CopyLog_201103.txt будет файлом журнала за март 2011 года.

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

Буду признателен за любые предложения / советы, заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 16 марта 2011

Уродливый способ (не рекомендуется, но необходим в Windows 2000 и более ранних версиях):

set MyDate=%DATE:-=%
set Filename=D:\Logs\CopyLog_%MyDate:~0,6%
robocopy ... /Log+:%Filename%

Примечание. Это предполагает использование ISO-8601 в качестве формата короткой даты в вашей системе.Если это не так, то вам нужно построить дату из подстрок %date%.

Локальный способ:

for /f "skip=1" %%d in ('wmic os get localdatetime') do if not defined MyDate set MyDate=%%d
set Filename=D:\Logs\CopyLog_%MyDate:~0,6%
robocopy ... /Log+:%Filename%
1 голос
/ 16 марта 2011

Вы можете получить день, месяц и год, используя этот фрагмент команды:

for /f "usebackq tokens=1-3 delims=/" %%d in ('%date%') do (
    set day=%%d
    set month=%%e
    set year=%%f
)

(Предупреждение: для конкретной локали.)

Теперь вы можете писать в разные файлы журналов, как считаете нужным.

...