Batch file 将IP地址写入文件

Batch file 将IP地址写入文件,batch-file,command,cmd,ip,Batch File,Command,Cmd,Ip,有没有简单的命令将ip地址写入文件 我知道如何在文件中写入,但是否有sysvar或其他东西 我能想到的最简单的: ipconfig > file ipconfig |查找“IP地址”>out.txt 您仍然需要从“IP地址………:0.0.0.0”中提取IP地址并删除任何空白。这就是您要查找的吗 @echo on for /f "tokens=1-2 delims=:" %%a in ('ipconfig^|find "IP Address"') do set ip=%%b set i

有没有简单的命令将ip地址写入文件


我知道如何在文件中写入,但是否有sysvar或其他东西

我能想到的最简单的:

ipconfig > file
ipconfig |查找“IP地址”>out.txt


您仍然需要从“IP地址………:0.0.0.0”中提取IP地址并删除任何空白。

这就是您要查找的吗

@echo on

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

set ip=%ip:~1%

echo %ip%

只添加了一点以显示网关(您的路由器)和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

对于Windows 7计算机:

ipconfig | findstr /b /c:"   IPv4" > output.txt
在起始引号和IPv4之间有三个空格字符,因为从技术上讲,该行以空格开头。在使用findstr命令之前,我不知道有什么方法可以去掉它

请记住,即使它在技术上是正则表达式,Windows命令行也不会像解析C#之类的东西那样解析它们。有一个可接受的序列/通配符列表(标记为XP,但它在Win7环境中对我有效)


我尝试了一些错误,但这只会得到指定IPv4地址的行,而不会得到“自动配置”的东西,这些东西会干扰其他findstr迭代的结果。

下面是一个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
Const ForReading=1
出现的常数=8
Dim ipLog、objHTTP、strHTML、varStart
尺寸可变挡块,带式,strCurrIP,objFSO
Dim txtFile、strLine、objShell
'用于跟踪外部IP地址的日志
ipLog=“ExternalIP.txt”
'从web获取当前外部IP地址
设置objHTTP=CreateObject(“MSXML2.XMLHTTP”)
调用objHTTP.Open(“GET”http://checkip.dyndns.org“,错)
objHTTP.Send()
strHTML=objHTTP.ResponseText
'如果收到HTML,则从HTML中提取IP
如果是strHTML“”,则
varStart=InStr(1,strHTML,“当前IP地址:”,vbTextCompare)+19
如果varStart,则varStop=InStr(varStart,strHTML,“,vbTextCompare)
如果varStart和varStop,则strIP=Mid(strHTML、varStart、varStop-varStart)
其他的
strIP=“不可用”
如果结束
'删除前面或后面的空格
strCurrIP=修剪(条带)
'检查日志文件和最后一个日志条目
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
如果没有(objFSO.FileExists(ipLog)),则
'如果日志文件不存在,请创建它
设置txtFile=objFSO.CreateTextFile(ipLog,True)
strIP=“”
其他的
'从日志文件获取最后一个外部IP地址条目
设置txtFile=objFSO.OpenTextFile(ipLog,ForReading)
直到txtFile.AtEndOfStream
strLine=txtFile.ReadLine
如果Len(strLine)>0,则
strIP=strLine
如果结束
环
如果结束
txtFile.Close
'Extarct日志文件项中的最后一个外部IP
如果带“”则
varStart=1
varStop=InStr(varStart,strIP,,,,vbTextCompare)-1
如果varStop,则strIP=Mid(strIP,varStart,varStop-varStart)
'删除前面或后面的空格
装饰条(带)
其他的
strIP=“不可用”
如果结束
'将IP复制到剪贴板
设置objShell=WScript.CreateObject(“WScript.Shell”)
运行“CMD/ccecho”和strcurip&“CLIP”,2
'检查外部IP是否已更改
如果strCurrIP=剥离,则
'如果未更改,则显示IP
MsgBox“外部IP:&strcurip&”未更改
其他的
'如果将日志更改为文件并显示IP
设置txtFile=objFSO.OpenTextFile(ipLog,用于显示)
txtFile.Write(strCurrIP&vbTab&vbCrLf)
txtFile.Close
MsgBox“外部IP:&strCurrIP&vbCrLf&”此IP地址已被记录
如果结束
“清除变量
设置ipLog=Nothing
设置objHTTP=Nothing
设置strHTML=Nothing
设置varStart=Nothing
设置varStop=Nothing
设置条=无
设置strCurrIP=Nothing
设置objFSO=Nothing
设置txtFile=Nothing
设置strLine=Nothing
Set objShell=Nothing

我不相信这个脚本,我只是在我电脑上的一个文件夹中找到了它,我已经很久没碰它了。

是的,但是你知道如何只获取ip地址吗?hm@fuzi:您可以执行类似于
ipconfig |查找“IPv4”>file
的操作,然后
for/f“tokens=2 delims=:%i(文件)中的do echo%i>>ip.txt
请记住,如果您有多个网络适配器,也可能有多个ip地址。我认为您在说ip地址时做出了一个危险的假设。许多计算机有多个ip地址,因为它们有多个网络适配器,因此请确保您所做的任何操作都支持多个ip。如果您需要查看您的外部ip地址(您的型号/路由器分配的ip地址)而不是本地LAN的ip地址,请参见此处的哪个ip地址?哪个网关?
@echo off
PowerShell.exe -Command "(Invoke-WebRequest ifconfig.me/ip).Content.Trim()" >> ipToFile.txt