Я пытаюсь создать ярлык, который будет запускать следующую команду со следующими переключателями. Окно закрывается до того, как команда успеет выполниться достаточно долго. Я хочу знать, куда вставить /k в поле назначения ярлыка, чтобы окна не закрывались. (Я думаю, это /k, но, возможно, это что-то другое).
ping XXX.XXX.XXX.XXX -t -l 25565
Мое целевое поле выглядит так:
"C:\Windows\System32\PING.EXE" /k 10.98.56.1 -t -I 25565
Но я не знаю, куда следует вставить /k (если это /k). Может ли кто-нибудь переписать это с правильным синтаксисом для меня?
решение1
Параметр /k
необходимо передать в терминальный процесс ( cmd.exe
). Таким образом, ваш ярлык должен выглядеть так:
%COMSPEC% /k C:\Windows\System32\PING.EXE XXX.XXX.XXX.XXX -t -I 25565
Примечание: %COMSPEC%
будет решеноcmd.exe
решение2
Аргумент /k
, который вы упомянули, относится к cmd.exe
, а не к ping
. Поэтому вам нужно вызвать:
C:\Windows\System32\cmd.exe /k "c:\windows\system32\ping.exe" -t -I 255 192.168.1.1
Аргумент -t
указывает, что вы будете пинговать до отмены, а -I
параметр указывает TTL (Time-To-Live). Максимальное значение этого поля составляет 255 согласно спецификации TCP.
Прежде чем я понял, что /k
аргумент был за cmd.exe
, я написал этот ответ с помощью пакетных файлов. Это может быть познавательно, и это просто еще один способ выполнить работу, так что я оставлю это на случай, если это того стоит.
Пример пакетного файла 1:
@ECHO OFF
ping -t -I 255 %1
pause
exit
Затем вы можете вызвать этот пакетный файл с помощью сочетания клавиш:
"c:\folder\batchfile.bat" 192.168.1.1
Конечно, вам следует заменить диск, папку, имя пакетного файла и IP-адрес.
Вы также можете объединить серию пингов, используя следующую структуру:
@echo off
:loop
cls
ping -n 10 -I 255 %1
timeout 5
goto :loop
Который использует -n
аргумент для ping 10 раз, затем делает тайм-аут на 5 секунд, прежде чем начать снова с еще одной порцией из 10.