J'ai récemment mis à niveau ma connexion haut débit pour que la nouvelle ait à la fois ipv6 et ipv4. Mon précédent avait seulement ipv4. Je veux mettre ipv4 dans une variable dans un fichier batch au lieu d'ipv6. Les commandes actuelles que j'utilise donnent l'ip par défaut si tôt, elles stockaient ipv4 dans la variable, mais maintenant elles y stockent ipv6. Je n'ai aucune idée de comment obtenir ipv4 car le nslookup que j'utilise ne donne que ipv6. Voici mon fichier batch actuel.

@echo off
setlocal EnableExtensions Disabledelayedexpansion
cd /d "%~dp0"
for /f "tokens=1* delims=: " %%A in (
  'nslookup myip.opendns.com. resolver1.opendns.com 2^>NUL^|find "Address:"'
) Do set ExtIP=%%B

<save.ip set /p SavIP=
if "%SavIP%" neq "%ExtIP%" (
  echo %date% %time~0,5% : IP changed from %SavIP% to %ExtIP%.
  >save.ip echo %ExtIP%
  start http://%ExtIP%             #this is where I put the url
) else (
  echo ExtIP didn't change. Nothing to do.
)
1
Animesh Agarwal 19 févr. 2021 à 14:31

1 réponse

Meilleure réponse

Je viens de tester ce fichier batch et ça marche de mon côté 5/5!

@echo off
Title Get Public IP by Powershell and Batch
@for /f "delims=" %%# in (
'PowerShell -C "Resolve-DnsName -Name "'myip.opendns.com'" -Server "'resolver1.opendns.com'" | select IPAddress" ^| findstr "\."'
) do Set "MyPublicIP=%%#"
echo My Public IP Address  = %MyPublicIP%
pause

Et en voici un autre qui appelle un sous-programme :GetPublic_IP <Target> <IP>

@echo off
Title Get Public IP by Powershell and Batch
Set "MyPublicIP=myip.opendns.com"
Set "Google=www.google.com"
Set "Yahoo=www.yahoo.com"
Set "Stack=www.stackoverflow.com"

Call :GetPublic_IP "%MyPublicIP%" MyPublicIP 
echo My Public IP Address       = %MyPublicIP%
Call :GetPublic_IP "%Google%" Google_IP 
echo Google IP Address          = %Google_IP%
Call :GetPublic_IP "%Yahoo%" Yahoo_IP 
echo Yahoo IP Address           = %Yahoo_IP%
Call :GetPublic_IP "%Stack%" Stack_IP
echo Stackoverflow IP Address   = %Stack_IP%
pause
EXIT
::------------------------------------------------------------------------------------
:GetPublic_IP <Target> <IP>
@for /f "delims=" %%# in (
'PowerShell -C "Resolve-DnsName -Name '"%~1"' -Server "'resolver1.opendns.com'" | select IPAddress" ^| findstr "\."'
) do Set "%2=%%#
Exit /B
::------------------------------------------------------------------------------------
1
Hackoo 20 févr. 2021 à 06:46