在批处理脚本中跳过多行

时间:2014-09-17 17:44:19

标签: windows batch-file cmd command-prompt

我想从命令的输出中只打印出某一行。 让我们以ipconfig命令为例。这会返回很多行。

Windows IP Configuration


Wireless LAN adapter Wireless Network Connection:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : ab80::456d:123e:5ae5:9ab6%15
   IPv4 Address. . . . . . . . . . . : 192.168.1.33
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.1.1

Ethernet adapter Local Area Connection:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

我想打印说第11行。

我尝试了以下

FOR /F "skip=10 delims=" %G IN ('IPCONFIG') DO @ECHO %G

仅跳过前10行并打印其余行。

   Default Gateway . . . . . . . . . : 192.168.1.1
Ethernet adapter Local Area Connection:
   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

如何打印第11行?

2 个答案:

答案 0 :(得分:4)

离开循环

FOR /F "skip=10 delims=" %G IN ('IPCONFIG') DO @ECHO %G & goto done
:done

已编辑从单个命令行获取命令输出中的第11行

for /f "tokens=1,* delims=:" %a in ('ipconfig^|findstr /n "^"^|findstr /l /b /c:"11:"') do echo %b

执行命令,对输出进行编号,检索所需的行,拆分初始编号并回显其余部分

set "x=1" & for /f "skip=10 delims=" %a in ('ipconfig') do @(if defined x (set "x=" & echo %a))

设置一个标志变量,执行命令,跳过前10行,如果设置了标志,则为每一行,清除标志并回显该行

答案 1 :(得分:2)

Could I run this in a single command? I mean not through a batch file.是的:

ipconfig |find "Default Gateway"

(在命令行和批处理文件中运行)