Используйте cmd.exe
командный процессор для создания имени файла с меткой времени для регистрации вывода запланированной задачи.
Чтобы основываться на ответах других здесь, возможно, вы захотите создать выходной файл с датой и / или временем, встроенными в имя файла. Вы можете использовать cmd.exe
командный процессор, чтобы сделать это за вас.
Примечание. Этот метод берет строковый вывод внутренних переменных среды Windows и разбивает их на части в зависимости от позиции символа. Из-за этого точные значения, приведенные в примерах ниже, могут не подходить для региона Windows, который вы используете. Кроме того, с некоторыми региональными настройками некоторые компоненты даты или времени могут вводить пробел в созданное имя файла, если их значение меньше 10. Чтобы смягчить эту проблему, заключите имя файла в кавычки, чтобы любые непредусмотренные пробелы в файле name не нарушит командную строку, которую вы создаете. Поэкспериментируйте и найдите то, что лучше всего подходит для вашей ситуации.
Имейте в виду, что PowerShell
это мощнее, чем cmd.exe
. Одним из преимуществ этого метода является то, что он может работать с разными регионами Windows. Но этот ответ касается решения этой проблемы с помощью cmd.exe
, а не PowerShell
, поэтому мы продолжаем.
С помощью cmd.exe
Вы можете получить доступ к различным компонентам даты и времени, разрезав внутренние переменные среды %date%
и %time%
, как показано ниже (опять же, точные значения среза зависят от региона, настроенного в Windows):
- Год (4 цифры):
%date:~10,4%
- Месяц (2 цифры):
%date:~4,2%
- День (2 цифры):
%date:~7,2%
- Час (2 цифры):
%time:~0,2%
- Минуты (2 цифры):
%time:~3,2%
- Второй (2 цифры):
%time:~6,2%
Предположим, вы хотите, чтобы ваш файл журнала назывался в следующем формате даты / времени: " Log_[yyyyMMdd]_[hhmmss].txt
". Вы бы использовали следующее:
Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
Чтобы проверить это, запустите следующую командную строку:
cmd.exe /c echo "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt"
Собирая все вместе, чтобы перенаправить оба stdout
и stderr
из вашего скрипта в файл журнала, названный с текущей датой и временем, можно использовать в качестве командной строки следующее:
cmd /c YourProgram.cmd > "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt" 2>&1
Обратите внимание на использование кавычек вокруг имени файла для обработки экземпляров, в которых компонент даты или времени может вводить пробел.
В моем случае, если текущая дата / время были 10/05/2017 9:05:34 AM, приведенная выше командная строка выдала бы следующее:
cmd /c YourProgram.cmd > "Log_20171005_ 90534.txt" 2>&1