Я пытаюсь запустить несколько команд в Windows cmd. И между командами нужно спать ~4 секунды.
Я копирую блок команд в cmd и затем хочу, чтобы они запускались один за другим с перерывами в 4 секунды.
Моя проблема в том, что команда тайм-аута останавливает выполнение и не переходит к следующим командам:
python3 my_file.py -a
timeout /t 4 /nobreak > nul
python3 my_file.py -b
timeout /t 4 /nobreak > nul
python3 my_file.py -c
Первая и вторая строки выполняются, а затем заканчиваются и отображается знак >
.
(Я сделал то же самое в Linux с командой «сон», и она работает отлично)
Я также пробовал разные варианты команды тайм-аута, такие как timeout /t 4
и timeout 4
, но ничего не работает...
Как мне это сделать? он должен работать в Windows cmd, а не как командный файл.
Спасибо
Обновлять:
Как ответил @JosefZ, моя проблема вызвана использованием PASTE. Команда timeout проигнорировала команду PASTE, поэтому следующие команды я не получил.
Использование команды PING в качестве ответа решило проблему.
В использованных вами командах timeout
нет очевидных синтаксических проблем, хотя правильнее было бы выглядеть так %SystemRoot%\System32\timeout.exe /T 4 /NoBreak 1>NUL
.
timeout /?
говорит о параметре /NOBREAK
:
/NOBREAK
Игнорируйте нажатия клавиш и подождите указанное время.
Игнорировать, т. е. подавлять все содержимое буфера клавиатуры, заполненное методом ВСТАВИТЬ.
Задержку также можно вызвать командой PING с адрес обратной связи (
127.0.0.1
), в тестах это потребляет меньше процессора время, чемSleep.exe
илиTimeout.exe
. Задержка между каждым пингом составляет 1 секунду, поэтому при задержке в 5 секунд пингуется 6 раз.
Следующий фрагмент кода должен работать должным образом:
python3 my_file.py -a
PING -n 5 127.0.0.1 1>nul 2>&1
python3 my_file.py -b
PING -n 5 127.0.0.1 1>nul 2>&1
python3 my_file.py -c
Какой у вас результат
where python3
? Я подозреваю, что это файл.bat
или.cmd
— тогда вам нужноcall
его.