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上不起作用).
使用该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子例程中的计算结果为没有前导空格的地址.
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)