Мне нужно использовать какую-то команду, чтобы найти внешний ip пользователя моего командного файла. Я перепробовал много методов, но мне нужен командный файл, чтобы распознать ip как переменную, чтобы он мог его использовать. Любой получил ответы
1 ответ
3
Я никогда не знал о BITSAdmin.
Но я нашел это в руководстве:
BITSAdmin устарела и не гарантируется, что будет доступна в будущих версиях Windows.
Вы также можете сделать это без BITSadmin (и с небольшой помощью powershell):
@echo off
set ip=
powershell.exe -Command (New-Object net.webclient).downloadstring('http://myexternalip.com/raw') > tempfile
set /p ip=<tempfile
del tempfile
echo %ip%
Вы также можете сделать это без tempfile (но тогда это становится немного сложнее)
Редактировать:
Это версия без временного файла:
@echo off
set ip=
for /f "delims=" %%a in ('powershell.exe -Command ^(New-Object net.webclient^).downloadstring^('http://myexternalip.com/raw'^)') do @set ip=%%a
echo %ip%
Edit2:
Я был не очень доволен скоростью.
Вот версия, которая намного быстрее (почти мгновенно):
@echo off
set ip=
for /f "tokens=2 delims= " %%a in ('%windir%\system32\nslookup myip.opendns.com resolver1.opendns.com 2^> nul ^| find "Address" ^| find ^/V "208.67.222.222"') do set ip=%%a
echo %ip%