Как мне получить вывод сценария, выполняемого с помощью планировщика задач Windows, при использовании Windows Server 2008?
Я тестирую довольно длинный пользовательский пакетный сценарий печати, и в целях отладки я хотел бы видеть все результаты его работы каждую ночь.
batch-file
scheduled-tasks
Mechaflash
источник
источник
Ответы:
Попробуйте это в качестве командной строки в планировщике задач:
источник
cmd /c "path with spaces/command.cmd > file.txt"
если у вас есть пробелы.2>&1
От ответа Ивана также идет в кавычки.cmd /c ""C:\temp\My test dir\something 123\myTool.exe" > Tilo_log.txt 2>&1"
С помощью stderr (куда попадает большинство ошибок):
источник
Чтобы дополнить ответ @ user2744787, вот снимок экрана, показывающий, как использовать
cmd
аргументы в запланированной задаче:Программа / сценарий:
cmd
Добавьте аргументы:
/c run_with_default_port.bat > IMQuantWebServices.log
источник
Он
>>
будет добавлять файл журнала, а не перезаписывать его каждый раз. Также2>&1
будут отправлены ошибки в ваш файл журнала.источник
У вас может быть debug.cmd, который вызывает yourscript.cmd
вы планируете debug.cmd вместо yourscript.cmd
источник
Используйте
cmd.exe
командный процессор для создания имени файла с меткой времени для регистрации вывода запланированной задачи.Чтобы основываться на ответах других здесь, возможно, вы захотите создать выходной файл с датой и / или временем, встроенными в имя файла. Вы можете использовать
cmd.exe
командный процессор, чтобы сделать это за вас.Примечание. Этот метод берет строковый вывод внутренних переменных среды Windows и разбивает их на части в зависимости от позиции символа. Из-за этого точные значения, приведенные в примерах ниже, могут не подходить для региона Windows, который вы используете. Кроме того, с некоторыми региональными настройками некоторые компоненты даты или времени могут вводить пробел в созданное имя файла, если их значение меньше 10. Чтобы смягчить эту проблему, заключите имя файла в кавычки, чтобы любые непредусмотренные пробелы в файле name не нарушит командную строку, которую вы создаете. Поэкспериментируйте и найдите то, что лучше всего подходит для вашей ситуации.
Имейте в виду, что
PowerShell
это мощнее, чемcmd.exe
. Одним из преимуществ этого метода является то, что он может работать с разными регионами Windows. Но этот ответ касается решения этой проблемы с помощьюcmd.exe
, а неPowerShell
, поэтому мы продолжаем.С помощью
cmd.exe
Вы можете получить доступ к различным компонентам даты и времени, разрезав внутренние переменные среды
%date%
и%time%
, как показано ниже (опять же, точные значения среза зависят от региона, настроенного в Windows):%date:~10,4%
%date:~4,2%
%date:~7,2%
%time:~0,2%
%time:~3,2%
%time:~6,2%
Предположим, вы хотите, чтобы ваш файл журнала назывался в следующем формате даты / времени: "
Log_[yyyyMMdd]_[hhmmss].txt
". Вы бы использовали следующее:Чтобы проверить это, запустите следующую командную строку:
Собирая все вместе, чтобы перенаправить оба
stdout
иstderr
из вашего скрипта в файл журнала, названный с текущей датой и временем, можно использовать в качестве командной строки следующее:Обратите внимание на использование кавычек вокруг имени файла для обработки экземпляров, в которых компонент даты или времени может вводить пробел.
В моем случае, если текущая дата / время были 10/05/2017 9:05:34 AM, приведенная выше командная строка выдала бы следующее:
источник
Вы можете записать в файл журнала строки, которые хотите вывести, следующим образом:
Таким образом, вы можете выбрать, какие команды выводить, если не хотите копаться во всем, просто получите то, что вам нужно увидеть. Он
>
выведет его в указанный файл (создав файл, если он не существует, и перезапишет его, если он существует).>>
Добавит в файл , указанный (создание файла , если он не существует , но добавляющий к содержанию , если он делает).источник
Пример того, как запустить программу и записать stdout и stderr в файл с отметкой времени:
Ключевой частью является двойная кавычка всей части позади
cmd /c
и внутри нее, как обычно, двойные кавычки. Также обратите внимание, что дата зависит от языкового стандарта, этот пример работает с использованием языкового стандарта США.источник
Этот фрагмент кода использует wmic.exe для построения строки даты. Это не зависит от настроек локали
источник