Я использую скрипт командной строки для настройки нескольких параметров на компьютере. Тем не менее, я хотел бы, чтобы весь вывод был также зарегистрирован в файле .txt или .log.
Когда я использую свои базовые знания о системе ведения журналов, она помещает вывод в файл, но фактически не выполняет его. В моем случае мне нужно было бы выполнить его, а затем войти в файл для дальнейшего использования.
Кто-нибудь сможет сказать мне, как это сделать?
Заранее спасибо! Dempsey
command-line
logging
cmd.exe
Dempsey FoxDie Van Assche
источник
источник
Ответы:
Если вопрос требует, чтобы скрипт был «выполнен» и весь пакетный файл был выведен в файл журнала в Windows 8.1, то вот простой ответ:
Включите это в начало вашего пакетного файла ...
источник
В своем вопросе вы упоминаете:
Поскольку вы говорите, что программа работает и ее вывод помещается в файл, я подумал, что вы могли иметь в виду «отображаемый» , а не «выполненный» .
Если это не то, что вы имели в виду, то, возможно, это помогло бы, если бы это было объяснено лучше, возможно, с некоторым примером вывода.
В любом случае, я публикую этот ответ, если есть другие, которые считают этот вопрос / ответ полезным.
Таким образом, в основном это звучит так, как будто вы хотите, чтобы выходные данные сценария были записаны в файл, а также чтобы вы могли видеть выходные данные сценария на экране во время выполнения сценария.
(tl; dr версия: используйте wintee , вот так:
script 2>&1 | wtee logfile.txt
)В этом посте я буду использовать небольшой тестовый пакетный файл, но ваш скрипт может быть настолько большим и сложным или настолько простым, насколько вам нужно:
Вот что происходит, когда я запускаю этот пакетный скрипт:
Обратите внимание, что в тестовом сценарии первое выполнение команды "dir" прошло успешно, а второе - не удалось. Я делаю это только для того, чтобы показать, что произойдет с «сообщениями об ошибках» при запуске скрипта.
Если я запущу скрипт и использую перенаправление ( ">" ) для захвата вывода, я увижу это
Обратите внимание, что сообщение об ошибке «Файл не найден» отображалось на экране при запуске сценария и фактически не было записано в файл. Это потому, что «>» захватывает «нормальный вывод», который был отправлен в поток STDOUT. «Сообщения об ошибках» обычно отправляются в поток STDERR.
Чтобы захватить «нормальный вывод» и «сообщения об ошибках», вам также нужно захватить поток STDERR, который обозначен «2» в «2> & 1» в команде здесь:
В Unix есть стандартная команда:
"tee"
Используя команду «tee», вы можете захватывать выходные данные из программы, а также одновременно отображать выходные данные на экране.
Команда "tee" не является стандартной для Windows, но вы можете скачать бесплатную версию "tee" для Windows здесь: wintee . Загруженная программа называется:
"wtee.exe"
.Вы используете программу "wtee.exe", как показано ниже.
Это будет захватывать вывод скрипта в файл с именем,
"log.txt"
как и раньше, а также отображать вывод на экран во время работы скрипта:источник
Этот скрипт выполнит ls и запишет его вывод в файл с именем log.txt:
Журнал не будет выполнен.
источник