Мне нужно использовать какую-то команду, чтобы найти внешний ip пользователя моего командного файла. Я перепробовал много методов, но мне нужен командный файл, чтобы распознать ip как переменную, чтобы он мог его использовать. Любой получил ответы

1 ответ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%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .