powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Простой вопрос по командной строке
7 сообщений из 7, страница 1 из 1
Простой вопрос по командной строке
    #38971405
Alexey Agafonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Столкнулся с небольшим вопросом. Запускаю условно-управляющий .bat файл ( 1.bat ), в котором по очереди вызываются другие файлы параллельно в отдельном процессе:

Код: plaintext
1.
2.
3.
4.
start 2.bat
start 3.bat
start 4.bat
start 5.bat

Как сделать так, чтобы их вывод (ошибки, echo и пр) выводился в исходный, управляющий файл? Я хочу его запукать так:

Код: plaintext
C:\Temp>1.bat > log.txt

и отслеживать выполнения всех дочерних процессов.
...
Рейтинг: 0 / 0
Простой вопрос по командной строке
    #38971411
const64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Agafonov,

Код: sql
1.
2.
>help call
Вызов одного пакетного файла из другого.
...
Рейтинг: 0 / 0
Простой вопрос по командной строке
    #38971422
Alexey Agafonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
const64, эта команда не подходит к сожалению, так как это вызов одного пакетного файла из другого без завершения выполнения первого файла. Таким образом, я не смогу запустить параллельно пять файлов.
...
Рейтинг: 0 / 0
Простой вопрос по командной строке
    #38971427
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, перенаправление в файл вывода BAT-файла не перенаправит вывода всех запускаемых в нём процессов. Только тех, которые пишут в стандартный поток вывода. Впрочем, в большинстве случаев этого достаточно.
Во-вторых, простое перенаправление >file.txt не перенаправит в файл сообщение об ошибках, это нужно делать отдельным дополнением, например, перенаправлением потока ошибок в стандартный поток вывода или отдельный файл. Первое удобнее - видно, в каком порядке происходят события в батче.
В третьих, файл, в который перенаправляется поток вывода, эксклюзивно блокируется во избежание конфликтов, посему каждый ВАТ-файл должен кидать данные в свой файл.
В четвёртых, ВАТ-файл не передаёт перенаправление в файл, выполняемый в другом потоке командой start.
Так что твой "управляющий" батч должен выглядеть как-то так:

Код: powershell
1.
2.
3.
4.
start 2.bat >log2.txt 2>&1
start 3.bat >log3.txt 2>&1
start 4.bat >log4.txt 2>&1
start 5.bat >log5.txt 2>&1
...
Рейтинг: 0 / 0
Простой вопрос по командной строке
    #38971448
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Agafonov,
Вы можете вызов сделать как
C:\Temp>1.bat log.txt
И обработать переменную %1 в самом 1.bat
т.е.
MyLog=%1
start 2.bat >> MyLog
Вообще-то в этом случае лучше вызывать через call, поскольку в лог будет писаться информация вперемешку от разных батников...
...
Рейтинг: 0 / 0
Простой вопрос по командной строке
    #38971479
Alexey Agafonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, да, я уже увидел, что формат вызова

Код: plaintext
start 2.bat > log2.txt

Перенаправит в log2.txt htpekmnfn работы команды start от управляющего файла, а не дочернего. То есть пусто и файл пустой. Это логично. Сделал так:

Код: plaintext
1.
start 2.bat >log2.txt 2>&1

Запустил, но ничего в лог не пишется. Да, пусть каждый поток пишет в свой лог, я уже не против. Но как запустить всех дочек с выводом в каждый свой файл?
...
Рейтинг: 0 / 0
Простой вопрос по командной строке
    #38971571
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: powershell
1.
start cmd /c 2.bat >log2.txt 2>&1
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / Простой вопрос по командной строке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]