1 votes

Comment afficher l'adresse IP locale à l'aide d'un fichier batch ?

Jusqu'à présent, j'ai le code suivant dans mon fichier batch :

%comspec% /c ipconfig | find "IPv4" > %HOMEPATH%\desktop\MyIP.txt
%comspec% /c start notepad %HOMEPATH%\desktop\MyIP.txt

Cependant, lorsque j'exécute le fichier batch, MyIP.txt est vide lorsqu'il est affiché.

En revanche, lorsque j'exécute chaque ligne l'une après l'autre depuis le champ de recherche de Démarrer de Windows, cela fonctionne.

Des idées pour corriger cela ?

3voto

Brandon Points 2580

Fonctionne bien à partir d'un fichier batch ici.

Quelques suggestions:

  • Essayez d'entourer les chemins de fichiers HOMEPATH de guillemets pour compenser d'éventuels espaces:
    %comspec% /c ipconfig | find "IPv4" > "%HOMEPATH%\desktop\MyIP.txt"
  • Assurez-vous d'exécuter le fichier batch en tant qu'utilisateur disposant d'un chemin d'accès et d'un bureau valides (et non pas, par exemple, avec le compte "System").
  • Essayez echo %HOMEPATH% seul dans un autre fichier batch et lancez-le de la même manière, vérifiez la sortie pour voir si %HOMEPATH% se développe comme vous vous y attendez (ajoutez "pause" à la fin du batch pour qu'il attende que vous appuyiez sur une touche).

1voto

Anthony Points 101

Enregistrez le code ci-dessous en tant que fichier batch dans le dossier system32.
Pour Windows 7, placez le fichier batch dans C: \ Windows \ System32.

@echo.
@echo                         INFORMATIONS IP
@echo                         Par: Aswin Sha

@ipconfig/all | find "Masque de sous-réseau"
@ipconfig/all | find "IPv4"
@ipconfig/all | find "Passerelle par défaut"
@ipconfig/all | find "Nom de l'hôte"
@ipconfig/all | find "Liste de recherche du suffixe DNS"
@ipconfig/all | find "Adresse physique"
@ipconfig/all | find "DHCP activé"
@ipconfig/all | find "Serveur DHCP"
@ping 127.0.0.1
@echo.
@pause

1voto

Mahadev Gouda Points 111

Cela fonctionne bien avec Windows 10 :

@echo off
for /f "skip=1 delims={}, " %%A in ('wmic nicconfig get ipaddress') do for /f "tokens=1" %%B in ("%%~A") do set "IP=%%~B"
for /f "tokens=1 delims=:" %%j in ('ping %computername% -4 -n 1 ^| findstr Reply') do (
    set localip=%%j
)
echo L'IP publique est : %IP%
echo L'IP locale est : %localip:~11%

Il retourne à la fois les adresses IP publiques et privées.

0voto

Karan Points 54603

Do you have to use a batch file? As per your requirements, the following code saved as GetIP.vbs and executed will launch Notepad and print your IP address(es) in it without saving as a text file first:

Set colItems = GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE", , 48)
For Each objItem In colItems
    If InStr(objItem.IPAddress(0), ":") = 0 Then
        strIP = "Description: " & objItem.Description & vbCR & "IP Address : " & objItem.IPAddress(0) & vbNewLine
    End If
Next
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "Notepad"
WScript.Sleep 100
WshShell.AppActivate "Notepad"
WshShell.SendKeys strIP

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X