Пакетный файл: запуск команды и цикла одновременно

316
david114

Я хочу запустить простой пакетный скрипт, который в основном включает только две команды Wireshark:

@echo off dumpcap -i 1 -f "tcp port 8800" -a "filesize:100" -n -w "data.pcap"  && :loop start tshark -r data.pcap -T fields -Y "frame contains ERROR" -e data.data > data.txt timeout /t 5 echo hi goto :loop 

Однако dumpcap....будет выполняться только первая команда . Я не могу заставить петлю работать. Это работает, когда я помещаю цикл в отдельный пакетный файл, но это не то, что я хочу.

1

1 ответ на вопрос

2
Twisty Impersonator

Вам нужно удалить строку, которая содержит &&. Если вы запускаете ваш скрипт из командной строки (вместо двойного щелчка по нему в Windows), вы должны получить эту ошибку:

&& было неожиданным в это время.

Это &&условный разделитель команд, который означает «запускать следующую команду, только если исходящая команда была успешной». Однако это не имеет никакого смысла в отдельной строке.

Рабочий скрипт должен выглядеть так:

@echo off dumpcap -i 1 -f "tcp port 8800" -a "filesize:100" -n -w "data.pcap"  :loop start tshark -r data.pcap -T fields -Y "frame contains ERROR" -e data.data > data.txt timeout /t 5 echo hi goto :loop 

Вы можете узнать больше об этой команде в этом вопросе StackOverflow .

это не работает, к сожалению. Когда запускается команда dumpcap, она открывает новое окно cmd и полностью игнорирует цикл. я не знаю, как этого избежать. david114 5 лет назад 0
Эта информация принадлежит вашему вопросу. Поставьте `start` или` start / w` перед командой dumpcap. Twisty Impersonator 5 лет назад 0