Назад | Перейти на главную страницу

Пакетный файл Windows выполняет некоторые команды, которые возвращают вывод снова и снова.

Я попытался поместить команды, возвращающие вывод, в командный файл. Когда я запускаю командный файл, он выполняет команду снова и снова, пока я не отменю ее нажатием CTRL + C.

Я наблюдал такое поведение в Windows CE, Windows XP, Windows 7 и Server 2003. Сначала мне показалось, что я ошибся с LDIFDE, но то же самое и с PING.

Что-то я упустил из-за пакетного скриптинга?

Файл содержит одну строку:

ping google.com

Я думаю, вы назвали свой сценарий ping.bat или ping.cmd и он зовет себя.

Это происходит из-за дизайнерского решения, представленного в DOS 2.0. В клонах и производных MS-DOS, Windows и MS-DOS текущий каталог является первым в пути поиска. Когда DOS ищет команду, она сначала проверяет, является ли это внутренней командой, встроенной в command.com (например, echo, copy), а затем выполняет поиск в файловой системе. Он всегда начинается с текущего каталога, а затем просматривает каталоги, определенные в переменной PATH.

У вас есть несколько вариантов:

  • Переименуйте скрипт.
  • Просто включите расширение файла в свой сценарий, чтобы оно было ping.exe google.com
  • Используйте полный путь к пингу %SystemRoot%\system32\ping.exe