2016-12-28 3 views
0

У меня есть .cmd-файл, который создает .bat-файл, который при вызове обеспечивает 500-миллисекундную задержку через ping. Код у меня есть для этого:CMD: Echo'ing в новый .bat не работает?

@echo off && SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION 
(" 
    echo @echo off 
    echo ping 1.1.1.1 -n 1 -w 500 
    echo exit /b 
")>C:\...\timeout.bat 
pause>NUL 
ENDLOCAL 

Однако, единственный выход в timeout.bat является

@echo off 
exit /b 

Кто знает, почему он не распознает команду ping? Является ли мой синтаксис неправильным?

+0

Что делает 'C: \ ... \ timeout.bat' делать? Я никогда не видел 3 точки на пути. Это опечатка? Я заменил его простым «timeout.bat» на моей стороне. Выполнение отправленного вами кода даже не создало файл. Это дало мне ошибку «0 было неожиданным в это время». Удаление двойных кавычек помогло мне. Тем не менее меня путают с «...», что он делает? –

+0

'C: \ ... \' является просто заполнителем. У меня есть полный путь на моем конце. – Caspr

ответ

1

Что произойдет Если вы измените свой сценарий на этот, который не предназначен для изменения вашего первоначального намерения?

@Echo Off 
([email protected] Off 
    Echo=Ping -n 1 127.0.0.1 -w 500 
    Echo=Exit/B)>"C:\NotSecretDir\time_out.bat" 
Timeout -1 1>Nul 

Я хотел бы предложить, что вызывающие пакетный файл, который затем вызывает команду пинга и возвращается к процессу инициирующего эффективно займет больше времени, чем предполагаемая половина второго. По этой причине я предлагаю вам не беспокоиться и просто использовать @Timeout 1 1>Nul.

+0

Это было то, что у меня было вчера, с простой строкой 'Timeout 2> Nul/Nobreak' всякий раз, когда мне это нужно. Однако с сегодняшнего утра код теперь возвращает ошибки 'не распознается как внутренняя или внешняя команда, оперативная программа или пакетный файл', и я был вынужден найти альтернативное решение. – Caspr

+0

Обновление: я перезапустил свой компьютер, и теперь @timeout снова работает. По-прежнему не знаю, что вызвало ошибку. Еще одна причина, по которой создателю .bat нужно ударить по голове ... – Caspr

+0

Обновление снова: @timeout снова перестает работать, однако на этот раз сообщение об ошибке не отображается. Даже в пустом файле .bat не появляется «Ожидание X секунд». Нажатие любой клавиши не продвигает файл, и я еще не видел, что тайм-аут действительно заканчивается. Он просто остается пустым. – Caspr

1

Ваш командный файл не будет писать строки в timeout.bat, так как ваш синтаксис неверен.

Ошибка (", и остальная часть вашей партии не будет выполнена.

Смежные вопросы