2010-12-15 95 views
3

是否有任何简单的命令将ip地址写入文件?将IP地址写入文件

我知道如何写在一个文件,但有没有一个sysvar或什么!?

+3

当你说* ip地址*时,我认为你做出了一个危险的假设。许多计算机具有多个IP地址,因为它们具有多个网络适配器,所以请确保您所做的任何操作都支持多个IP。 – 2010-12-15 15:26:41

+0

万一你需要看到你的外部IP地址(你的型号/路由器分配的),而不是你本地局域网的IP地址,请看这里http://stackoverflow.com/questions/41669330/windows-batch-how-to-get -the-external-ip-into-a-batch-file-variable – 2017-04-29 04:00:57

回答

3

ipconfig | find "IP Address" > out.txt

您仍然需要从“IP地址.............提取IP地址:0.0。 0.0“并修剪任何空格。

+3

请记住,可能有多个IP地址,如果您有多个网络适配器。 – Vicky 2010-12-15 15:26:22

3

最简单的我能想到的:

ipconfig > file 
+0

是的,但是你知道如何获得IP地址吗? * hm * – 2010-12-15 15:18:09

+1

@fuzi:你可以像'ipconfig |找到“IPv4”>“文件”,然后“for/f”标记= 2 delims =:“%i in(file)do echo%i >> ip.txt' – 2010-12-15 15:44:04

2

这是你在找什么?

@echo on 

for /f "tokens=1-2 delims=:" %%a in ('ipconfig^|find "IP Address"') do set ip=%%b 

set ip=%ip:~1% 

echo %ip% 
0

就加了一点儿也显示网关(路由器)和ping,看看你的DNS工作:

@echo off 

:ipaddress 
::Get IP address and save it to ip 
for /f "tokens=1-2 delims=:" %%a in ('ipconfig^|find "IP Address"') do set ip=%%b 
set ip=%ip:~1% 

:gateway 
::Get Gateway address and save it to gateway 
for /f "tokens=1-2 delims=:" %%a in ('ipconfig^|find "Gateway"') do set gateway=%%b 
set gateway=%gateway:~1% 


echo IP address is %ip% 
echo You router address is %gateway% 
pause 

cls 
ping %gateway% -a 
pause 

:end 
+1

哪个IP地址?哪个网关? – 2011-10-13 08:45:04

2

对于Windows 7的机器:

ipconfig | findstr /b /c:" IPv4" > output.txt 

有是开头引号和IPv4之间的三个空格字符,因为该行技术上以空格开头。我不知道在findtr命令之前剥离它的方法。

请记住,即使它的技术上是正则表达式,Windows命令行不会像C#或其他任何方式解析它们。有一个可接受的序列/通配符列表(标记为XP,但它在Win7环境中适用于我)here

花了我一些试验和错误,但这只让你分配IPv4地址的行,而不是“自动配置”的东西,混乱其他findtr迭代的结果。

0

这是一个可以完成这项工作的vbs脚本。请注意,这是针对外部IP地址的。只要看看上面的内部/本地IP地址。

这里是代码。只需创建一个文本文件,粘贴,重命名为something.vbs

Const ForReading = 1 
Const ForAppending = 8 
Dim ipLog, objHTTP, strHTML, varStart 
Dim varStop, strIP, strCurrIP, objFSO 
Dim txtFile, strLine, objShell 

' Log for tracking external IP addresses 
ipLog = "ExternalIP.txt" 

' Get current external IP address from web 
Set objHTTP = CreateObject("MSXML2.XMLHTTP") 
Call objHTTP.Open("GET", "http://checkip.dyndns.org", False) 
objHTTP.Send() 
strHTML = objHTTP.ResponseText 

' Extarct IP from HTML if HTML was recieved 
If strHTML <> "" Then 
    varStart = InStr(1, strHTML, "Current IP Address:", vbTextCompare) + 19 
    If varStart Then varStop = InStr(varStart, strHTML, "</body>", vbTextCompare) 
    If varStart And varStop Then strIP = Mid(strHTML, varStart, varStop - varStart) 
Else 
    strIP = "Unavailable" 
End If 
' Remove preceeding or trailing spaces 
strCurrIP = Trim(strIP) 

' Check for log file and last log entry 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
If Not (objFSO.FileExists(ipLog)) Then 
    ' If log file doesn't exist create it 
    Set txtFile = objFSO.CreateTextFile(ipLog, True) 
    strIP = "" 
Else 
    ' Get last external IP address entry from log file 
    Set txtFile = objFSO.OpenTextFile(ipLog, ForReading) 
    Do Until txtFile.AtEndOfStream 
     strLine = txtFile.ReadLine 
     If Len(strLine) > 0 Then 
      strIP = strLine 
     End If 
    Loop 

End If 
txtFile.Close 

' Extarct last external IP from log file entry 
If strIP <> "" Then 
    varStart = 1 
    varStop = InStr(varStart, strIP, ",", vbTextCompare) - 1 
    If varStop Then strIP = Mid(strIP, varStart, varStop - varStart) 
    ' Remove preceeding or trailing spaces 
    Trim(strIP) 
Else 
    strIP = "Unavailable" 
End If 

' Copy IP to clipboard 
Set objShell = WScript.CreateObject("WScript.Shell") 
objShell.Run "CMD /C ECHO " & strCurrIP & " | CLIP", 2 

' Check if external IP has changed 
If strCurrIP = strIP Then 
' If unchanged display IP 
    MsgBox "External IP: " & strCurrIP & " is unchanged" 
Else 
    ' If changed log to file and display IP 
    Set txtFile = objFSO.OpenTextFile(ipLog, ForAppending) 
    txtFile.Write(strCurrIP & vbTab & vbCrLf) 
    txtFile.Close 
    MsgBox "External IP: " & strCurrIP & vbCrLf & "This IP address has been logged" 
End If 

' Clear variables 
Set ipLog = Nothing 
Set objHTTP = Nothing 
Set strHTML = Nothing 
Set varStart = Nothing 
Set varStop = Nothing 
Set strIP = Nothing 
Set strCurrIP = Nothing 
Set objFSO = Nothing 
Set txtFile = Nothing 
Set strLine = Nothing 
Set objShell = Nothing 

我不邀功这个剧本,我只是觉得,我没有在摸我的计算机上的文件夹中长时间。