como exibir o IP local usando um arquivo em lotes?

1

Até agora eu tenho o seguinte no meu arquivo de lote:

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

No entanto, quando executo o arquivo em lote, o MyIP.txt fica vazio quando exibido.

Por outro lado, quando executo cada linha, uma após a outra, do campo de pesquisa Iniciar do Windows, ela funciona.

Alguma idéia de como corrigir isso?

    
por user231056 13.06.2013 / 19:00

4 respostas

3

Funciona bem com um arquivo de lote aqui.

Sugestões para casais:

  • Tente agrupar os caminhos do arquivo HOMEPATH entre aspas para compensar possíveis espaços:
    %comspec% /c ipconfig | find "IPv4" > "%HOMEPATH%\desktop\MyIP.txt"
  • Verifique se você está executando o arquivo em lote como um usuário que possui um caminho de acesso e área de trabalho válidos (e não como a conta "Sistema").
  • Tente echo %HOMEPATH% sozinho em outro arquivo de lote e execute-o da mesma maneira, verifique a saída para ver se% HOMEPATH% se expande para o que você está esperando (adicione "pausa" ao final do lote para que ele espere para você apertar uma tecla).
por 13.06.2013 / 19:12
1

Salve o código abaixo como arquivo em lotes na pasta system32.
Para o Windows 7, mantenha o arquivo em lote em C: \ Windows \ System32.

@echo.
@echo                         IP INFORMATION
@echo                         By:Aswin Sha

@ipconfig/all | find "Subnet Mask"
@ipconfig/all | find "IPv4" 
@ipconfig/all | find "Default Gateway"
@ipconfig/all | find "Host Name"
@ipconfig/all | find "DNS Suffix Search List"
@ipconfig/all | find "Physical Address"
@ipconfig/all | find "DHCP Enabled"
@ipconfig/all | find "DHCP Server"
@ping 127.0.0.1
@echo.
@pause
    
por 01.01.2014 / 18:09
1

Isso funciona bem com o 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 Public IP is: %IP%
echo Local  IP is: %localip:~11%

Ele retorna endereços IP públicos e privados.

    
por 25.07.2018 / 07:14
0

Você tem para usar um arquivo em lote? De acordo com suas necessidades, o seguinte código salvo como GetIP.vbs e executado iniciará o Notepad e imprimirá seu (s) endereço (s) IP sem salvar como um arquivo de texto primeiro:

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
    
por 14.06.2013 / 01:15