Используйте командный процессор 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, вышеприведенная командная строка выдала бы следующее:
cmd /c YourProgram.cmd > "Log_20171005_ 90534.txt" 2>&1