#batch-file
#пакетный файл
Вопрос:
Недавно я начал работать с файлами .bat и пытаюсь перенаправить выходные данные в файл.
Пока я нашел 2 варианта:
echo aaa > out.txt
— который отправляет выходные данные единственной команды echo в указанный файл (также может быть добавлен с помощью>>
)- вызов всего файла из cmd с помощью
somefile.bat > out.txt
(что на самом деле похоже на номер 1, поскольку оно отправляет вывод одной командыsomefile.bat
вout.txt
)
Я ищу кое-что еще — я пытаюсь создать в моем файле строку, которая отправляет весь вывод из этой точки в файл.
Спасибо!
Ответ №1:
echo this goes to screen
(
echo this line goes to the file
echo also this line and the ping-output
ping www.stackoverflow.com
echo and this
)>file.txt
echo this goes to screen again
Примечание:
все внутри блока (между (
и )
) анализируется сразу. Если вы используете переменные внутри блока, вам может потребоваться отложенное расширение.
Ответ №2:
Универсального решения не существует. Это зависит от требований к пакетному файлу.
Для большого количества пакетных файлов ответ от Стефана будет работать без проблем, принимая во внимание то, что он указал: весь код находится внутри блока, и любое управление переменными внутри него может потребовать отложенного расширения.
Другой альтернативой является перемещение кода в подпрограмму, вызывая ее с перенаправлением
@echo off
call :mainProcess %* > outputFile
exit /b
:mainProcess
:: here the batch file begins
echo %1 %2 %3
Комментарии:
1. Мне нравится это, потому что оно очень точно соответствует «… в моем файле есть строка, которая отправляет все выходные данные с этого момента и далее …» (хотя это три строки ^^) — и нет необходимости в отложенном расширении.
2. Мне это тоже понравилось, но это больше походило на организацию ответа Стефана и вызов пакетного файла, чем на что-то новое. Но это отличный ответ, и очень ясный