标题: [文本处理] 【已解决】bat 过滤添加字符的问题 [打印本页]
作者: Linux9253 时间: 2015-8-13 10:19 标题: 【已解决】bat 过滤添加字符的问题
- C:\>route print
-
- IPv4 Route Table
- ===========================================================================
- Interface List
- 0x1 ........................... MS TCP Loopback interface
- 0x10003 ...00 0c 29 02 6e 05 ...... Intel(R) PRO/1000 MT Network Connection
- ===========================================================================
- ===========================================================================
- Active Routes:
- Network Destination Netmask Gateway Interface Metric
- 0.0.0.0 0.0.0.0 192.168.12.2 192.168.12.4 1
- 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
- 192.168.12.0 255.255.255.0 192.168.12.4 192.168.12.4 10
- 192.168.12.4 255.255.255.255 127.0.0.1 127.0.0.1 10
- 192.168.12.255 255.255.255.255 192.168.12.4 192.168.12.4 10
- 224.0.0.0 240.0.0.0 192.168.12.4 192.168.12.4 10
- 255.255.255.255 255.255.255.255 192.168.12.4 192.168.12.4 1
- Default Gateway: 192.168.12.2
- ===========================================================================
- Persistent Routes:
- Network Address Netmask Gateway Address Metric
- 0.0.0.0 0.0.0.0 192.168.12.2 1
-
- C:\>
复制代码
上面是一个route print执行的结果(行数是不固定的)、现在我想取出 Persistent Routes: 下面的所有行(行数是不固定的)、保存到文件1.txt
然后再对1.txt文件做操作、成命令形式、比如上面的 0.0.0.0 0.0.0.0 192.168.12.2 1
也可能是多行内容、要变成 route add 0.0.0.0 mask 0.0.0.0 192.168.12.2 metric 1 命令格式 处理好后保存到2.txt里面
最后把1.txt 2.txt合并到3.txt
格式是
Network Address Netmask Gateway Address Metric
0.0.0.0 0.0.0.0 192.168.12.2 1
Route command
route add 0.0.0.0 mask 0.0.0.0 192.168.12.2 metric 1
然后删除文件1.txt,2.txt 求大神帮忙、这对我来说太难了。。。
作者: flyinnet9 时间: 2015-8-13 11:27
本帖最后由 flyinnet9 于 2015-8-13 11:28 编辑
- ::获取行号,格式可能不同,自己改分隔符
- for /f "tokens=1 delims=[]" %%a in ('route print ^|find /n "Persistent Routes"') do set row=%%a
- ::打印指定内容
- route print |more +%row% >1.txt
复制代码
其他的用for 很容易取到
作者: Linux9253 时间: 2015-8-13 11:49
本帖最后由 Linux9253 于 2015-8-13 12:20 编辑
回复 2# flyinnet9
谢谢哈、我已经完全实现了功能了、帮大忙了、再次感谢
作者: Linux9253 时间: 2015-8-13 12:34
回复 2# flyinnet9
觉得你的思路很好、还有一个问题想让你帮忙- Microsoft Windows [版本 5.2.3790]
- (C) 版权所有 1985-2003 Microsoft Corp.
-
- C:\Documents and Settings\Administrator>ipconfig
-
- Windows IP Configuration
-
-
- Ethernet adapter 本地连接 2:
-
- Connection-specific DNS Suffix . :
- IP Address. . . . . . . . . . . . : 10.131.80.51
- Subnet Mask . . . . . . . . . . . : 255.255.255.128
- Default Gateway . . . . . . . . . :
-
- Ethernet adapter 本地连接 3:
-
- Connection-specific DNS Suffix . :
- IP Address. . . . . . . . . . . . : 12.21.1.91
- Subnet Mask . . . . . . . . . . . : 255.255.255.192
- Default Gateway . . . . . . . . . : 12.21.1.126
-
- C:\Documents and Settings\Administrator>
复制代码
取出
本地连接 2: 10.131.80.51
本地连接 3: 12.21.1.91
它们的对应关系
作者: flyinnet9 时间: 2015-8-13 14:31
- @echo off
- setlocal enabledelayedexpansion
- set /a n=1
- for /f "tokens=2 delims=:" %%a in ('ipconfig ^|find "IP Address"') do (
- set /a n+=1
- set ip!n!=%%a
- )
- for /l %%a in (2 1 !n!) do echo 本地连接%%a !ip%%a!
复制代码
作者: Linux9253 时间: 2015-8-13 14:46
回复 5# flyinnet9
不好意思、刚才在忙、没看到、我测试了、非常完美、真厉害、非常感谢、真是难者不会,会者不难啊、
作者: Linux9253 时间: 2015-8-14 11:06
回复 2# flyinnet9
您好、关于过滤路由表的问题、我发现服务器上是IPv4一个、IPv6一个、现在怎么把第一个Persistent Routes: 到 IPv6 Route Table 之间的行提取出来呢?- IPv4 Route Table
- ===========================================================================
- Interface List
- 0x1 ........................... MS TCP Loopback interface
- 0x10003 ...00 0c 29 02 6e 05 ...... Intel(R) PRO/1000 MT Network Connection
- ===========================================================================
- ===========================================================================
- Active Routes:
- Network Destination Netmask Gateway Interface Metric
- 0.0.0.0 0.0.0.0 192.168.12.2 192.168.12.4 1
- 255.255.255.255 255.255.255.255 192.168.12.4 192.168.12.4 1
- Default Gateway: 192.168.12.2
- ===========================================================================
- Persistent Routes:
- Network Address Netmask Gateway Address Metric
- 0.0.0.0 0.0.0.0 192.168.12.2 1
- 192.168.12.0 255.255.255.0 192.168.12.1 1
- IPv6 Route Table
- ===========================================================================
- Interface List
- 5 ...00 0c 29 02 6e 05 ...... Intel(R) PRO/1000 MT Network Connection
- 4 ...ff ff ff ff ff ff ff ff Teredo Tunneling Pseudo-Interface
- ===========================================================================
- ===========================================================================
- Active Routes:
- If Metric Network Destination Gateway
- 1 1004 ::1/128 ::1
- 1 1008 ff00::/8 On-link
- 1 1004 fe80::1/128 fe80::1
- ===========================================================================
- Persistent Routes:
- None
复制代码
作者: flyinnet9 时间: 2015-8-14 14:33
- @echo off
- setlocal enabledelayedexpansion
- route print >tmp
- for /f "tokens=1 delims=:" %%a in ('findstr /n /c:"Persistent Routes" tmp') do if not defined row1 set row1=%%a
- for /f "tokens=1 delims=:" %%a in ('findstr /n /c:"IPv6 Route Table" tmp') do set row2=%%a
- set /a m=%row2%-%row1%
- for /f "delims=" %%a in ('more +%row1% tmp') do (
- set /a n+=1
- if !n! lss %m% (echo %%a) else (del tmp /q>nul&goto :eof)
- )>>result.txt
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |