Почему команда ping в моем пакетном файле выполняется в цикле и переходит в начало?

405
Nils

Я создал .BATфайл в Windows 10, который имеет следующие строки:

set /p ipadress="Please select your favourite IP-adress." echo %ipadress% ping %ipadress% -n 10 

Однако, когда я перехожу по этому пакетному файлу к ping, я вижу, что pingкоманда многократно выполняется в цикле. Я даже попытался переименовать ping.BATв ping.CMDно результат тот же.

Работает до второй строчки. После повторения выбранного IP-адреса, он заканчивается в цикле и переходит к началу моего командного файла.

output

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

Есть ли у вас какие-либо идеи?

0
Добро пожаловать в SuperUser! Как вызывается командный файл? Вы можете показать результат, который вы получаете? Stese 5 лет назад 1
командный файл называется «Ping2». Nils 5 лет назад 0
переименуйте его в test.bat и попробуйте снова. Stese 5 лет назад 0
он делает то же самое, он заканчивается в цикле. Nils 5 лет назад 0
! [output] (https://imgur.com/a/v9KqX3c) Nils 5 лет назад 0
`1 - Ping` и т. Д. Не относится к рассматриваемому коду. Какой-то другой (более широкий) фрагмент кода. Kamil Maciorowski 5 лет назад 0
спасибо, теперь это жутко :) они возвращаются к немецкому "старому" тексту, которого больше нет в командном файле. Nils 5 лет назад 0
Вы уверены, что редактируете и выполняете один и тот же файл? Kamil Maciorowski 5 лет назад 0
да, мы проверяли это несколько раз раньше. Nils 5 лет назад 0

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

1
Kamil Maciorowski

Из комментариев:

они возвращаются к немецкому «старому» тексту, которого больше нет в командном файле

Некоторый старый файл назван, ping.batи он находится в той же папке. ping %ipadress% -n 10из вашего нового файла вызывает старый файл. Старый файл, вероятно, вызывает ping(т.е. сам), следовательно, цикл.

Когда команда вводится в приглашении CMD, операционная система сначала ищет исполняемый файл в текущей папке, если не найден, она сканирует, %PATH%чтобы найти его.

( источник, акцент мой).

Это также объясняет, почему на предоставленном вами скриншоте абсолютно отсутствует вывод ping утилиты .

Решение: удалите или переименуйте ping.batфайл или запустите его явно, ping.exeчтобы избежать запуска файла с другим расширением с тем же именем (в текущей папке / в начале пути).

Или явно запустите ** ping.exe **, чтобы избежать запуска другого файла расширения с тем же именем. (+1) LotPings 5 лет назад 2
@LotPings Хорошая идея. Мой ответ теперь вики сообщества, он включает ваш полезный комментарий. Kamil Maciorowski 5 лет назад 1
мы проверили это снова, теперь у нас есть «решение». на другом ноутбуке пакетный файл работает нормально. мы думаем, что мы разбили системную переменную, но мы проверили это в инструменте. Теперь мы устанавливаем новые окна. у тебя есть идеи? Nils 5 лет назад 0
явно запустить ping.exe не работает, а. Я имею в виду, мы решаем проблему. но на будущее это не может быть решением, чтобы установить окна снова, из-за проблемы в командном файле .... :-) Nils 5 лет назад 0
@Nils Так что, возможно, ваш `ping.exe` сломан, или в вашем«% PATH »предшествует« фальшивый »` ping.exe`. Kamil Maciorowski 5 лет назад 0
спасибо, но почему они распечатывают "старую" немецкую версию? Nils 5 лет назад 0
Посмотрите это: [Есть ли эквивалент `which` в командной строке Windows?] (Https://stackoverflow.com/q/304319) Узнайте, к чему относится` ping`, и вы, вероятно, найдете там текст на немецком языке. Kamil Maciorowski 5 лет назад 0
доброе утро. с «какой командой» перед строкой ping это работает, но они выводят синтаксическую ошибку. у тебя есть идеи? Nils 5 лет назад 0
@Nils "` какая команда` перед линией пинга "? Почему впереди? Ты понимаешь, что `которое` в Linux? И почему кто-то хотел бы иметь его в Windows? Вы понимаете, что `команда` является заполнителем для такой команды, как` ping` или что-то еще? Моя точка зрения заключалась в том, что вам нужно было запустить `which ping` (или эквивалентную команду), чтобы * выяснить *, к чему решает` ping`, чтобы вы могли проверить найденный исполняемый файл, и, возможно, это будет "фальшивый" `ping` с Немецкий текст. Kamil Maciorowski 5 лет назад 0

Похожие вопросы