【问题标题】:Write local ip address to text file using batch file使用批处理文件将本地 IP 地址写入文本文件
【发布时间】:2012-12-01 03:20:38
【问题描述】:

我想创建一个将本地 IP 地址写入 txt 文件的批处理文件。当我使用此代码运行批处理文件时(文件路径错误,但这不是问题):

ipconfig | find "IP Address" > \File.txt

我获得了整个 Windows IP 配置(我用 xxx 更改了一些数字和内容以不显示所有信息)

    IP Address. . . . . . . . . . . . : 100.100.100.223

    IP Address. . . . . . . . . . . . : 192.xxx.xxx.xxx

我只想写入文件100.100.100.223

我是批处理文件的新手,我真的搜索了很多,我真的很困惑。 (也许我用错误的关键字搜索)。

忘了告诉我我使用的是 Windows XP(因为有些答案在 XP 上不起作用)。

【问题讨论】:

    标签: batch-file command cmd ip


    【解决方案1】:

    使用SET /P 命令将刚刚写入的文件的第一行读入一个变量,然后使用ECHO 用该行覆盖文件:

    ipconfig | find "IP Address" > \File.txt
    < \File.txt SET /P first_ip=
    ECHO %first_ip%> \File.txt
    

    更新(回应 cmets):

    要仅提取 IP 地址,您可以使用 FOR /F 循环,如下所示:

    ipconfig | find "IP Address" > \File.txt
    < \File.txt SET /P first_ip=
    FOR /F "delims=: tokens=2" %%I IN ("%first_ip%") DO (
      ECHO %%I> \File.txt
    )
    

    FOR /F 循环允许您逐行处理文本(文件或字符串文字),根据指定的分隔符将每一行拆分为字段(或 tokens)。您可以在内置帮助 (FOR /?) 中阅读有关此命令的更多信息。我只会补充一点,在这种情况下,处理的部分是字符串文字(first_ip 的值),分隔符设置为:,循环变量(%%I)接收第二个nd 令牌,这是一个 IP 地址。

    请注意,: 和 IP 之间的空间被保留,即它成为令牌 ( 100.100.100.223) 的一部分,因此也被写入文件。如果您对此不太满意,可以使用子程序来消除空间,如下所示:

    ipconfig | find "IP Address" > \File.txt
    < \File.txt SET /P first_ip=
    FOR /F "delims=: tokens=2" %%I IN ("%first_ip%") DO (
      CALL :MyEcho %%I
    )
    :: the following command is there merely to
    :: avoid running (into) the subroutine again
    GOTO :EOF
    
    :MyEcho
    ECHO %1> \File.txt
    

    当调用子例程 (CALL :MyEcho %%I) 时,参数与前导空格一起传递。但是在处理子例程的命令行时,该空格不再被视为值的一部分,因为参数没有被引用,因此解析器只看到一个与名称分开的参数,并带有两个空格。因此,子例程中的%1 计算为地址没有前导空格。

    【讨论】:

    • 还有一件事,我用这个打印“IP地址...... . . . . . . . . . : 100.100.100.223”,我能不能把它改成只有“100.100.100.223”
    【解决方案2】:
    for /f "tokens=2 delims=:" %%a in ('ipconfig^|find "IPv4 Address"') do (
    set ip=%%a
    goto :BREAK
    )
    
    :BREAK
    echo %ip: =% >ip.txt
    

    【讨论】:

    • 这很有帮助!不仅仅是标记为“正确”的答案!
    【解决方案3】:

    如果你对 powershell 没问题,试试这个:

    powershell.exe -c "gwmi Win32_NetworkAdapterConfiguration | ? { $_.IPAddress -ne $null } | % {$_.ipaddress[0]}"
    

    【讨论】:

    • 我在这里有点困惑(我通常是新手),我也会检查一下,看看我会得到什么!非常感谢。
    • & 当然,您需要将输出重定向到 File.txt。未添加到我的代码中。
    • 无论如何使用powershell时,为什么还要进行可怕的解析?只需使用:Get-NetIPAddress | % { $_.IPAddress }
    • ^^在 Win7 上给我The term 'Get-NetIPAddress' is not recognized as the name of a cmdlet, function, script file, or operable program.。但是,是的,有更好的选择。我很久以前就添加了这个答案,当时我不知道替代方案......正在更新答案。
    【解决方案4】:

    您可以使用自动热键。

    对于消息框,

    msgbox, %A_ipAddress%  
    

    或者如果你想在文本文件中用户

    Fileappend, %A_ipaddress%. Ip.txt
    

    有用的链接。 https://autohotkey.com/board/topic/45109-how-to-get-my-ip-address/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-25
      • 2018-08-06
      • 1970-01-01
      • 2011-05-25
      • 2014-04-07
      • 2011-08-19
      • 1970-01-01
      • 2013-11-21
      相关资源
      最近更新 更多