使用批处理文件将本地IP地址写入文本文件

Kon*_*dax 7 ip command cmd batch-file

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

ipconfig | find "IP Address" > \File.txt
Run Code Online (Sandbox Code Playgroud)

我得到了整个Windows IP配置(我更改了一些数字和xxx的东西,不显示所有信息)

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

    IP Address. . . . . . . . . . . . : 192.xxx.xxx.xxx
Run Code Online (Sandbox Code Playgroud)

我只想写一个文件100.100.100.223.

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

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

And*_*y M 6

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

ipconfig | find "IP Address" > \File.txt
< \File.txt SET /P first_ip=
ECHO %first_ip%> \File.txt
Run Code Online (Sandbox Code Playgroud)

更新(回答评论):

要仅提取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
)
Run Code Online (Sandbox Code Playgroud)

FOR /F环允许你处理文本(文件或字符串文字)逐行分割各行成字段(或令牌基于指定的分隔符(S)).您可以在内置帮助(FOR /?)中阅读有关此命令的更多信息.我只会补充说,在这种情况下,处理过的部分是字符串文字(值first_ip),分隔符设置为:,循环变量(%%I)接收第二个标记,即IP地址.

注意,:IP和IP 之间的空间被保留,即它成为token( 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
Run Code Online (Sandbox Code Playgroud)

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


Bal*_*i C 6

for /f "tokens=2 delims=:" %%a in ('ipconfig^|find "IPv4 Address"') do (
set ip=%%a
goto :BREAK
)

:BREAK
echo %ip: =% >ip.txt
Run Code Online (Sandbox Code Playgroud)