[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理for命令如何提取文本文件中的IP?

从IE另存为txt的格式为:
日期时间 主机名 IP地址 HTTP FTP
2009-12-15 17:21:28  1000  123.87.15.51  HTTP  FTP  
2009-12-15 12:44:38  pc-20  159.37.209.86  HTTP  FTP  
2009-12-15 00:30:24  ahjoe  58.251.97.66  HTTP  FTP  
2009-12-13 23:53:03  pc-200910180928  226.4.12.132  HTTP  FTP

保存为以上时用下面的for语句可以获取主机名为ahjoe的ip:
  1. for /f "tokens=4" %%i in ('findstr /i ahjoe c:\bat\ipload\1.txt') do set ip=%%i
复制代码
但用htmlastext.exe 转换后txt的格式后多了两个 íí 符号,用以上for语句获取IP会有íí,怎样修改for语句可以剔除这两个íí???
2009-12-16 19:42:22íí pc-200910180928íí 121.13.29.23íí HTTP  FTP
2009-12-16 19:39:06íí pc-20091118qufgíí 111.165.5.52íí HTTP  FTP
2009-12-15 18:27:48íí a01íí 118.118.208.136íí HTTP  FTP
2009-12-15 18:06:50íí 1000íí 112.113.3.225íí HTTP  FTP
2009-12-15 00:33:29íí ahjoeíí 58.251.97.66íí HTTP  FTP
2009-12-14 14:42:37íí home-pcíí 58.250.94.107íí HTTP  FTP

[ 本帖最后由 qwertl 于 2009-12-17 21:51 编辑 ]
1

评分人数

    • keen: 感谢主动给标题标注[已解决]字样PB + 2

回复 1楼 的帖子

把这个íí符合作为切分符应该可以。

TOP

这个符号不行作不了分隔符

TOP

用set命令做字符串截取吧
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

C:\bat>htmlastext.exe /run "c:\bat\h2t.cfg"
C:\bat>for /F "tokens=4" %i in ('findstr /i ahjoe c:\bat\ipload\1.txt'
) do set ip=%i
C:\bat>set ip=16.78.166.76íí

怎样用set去掉íí?

[ 本帖最后由 qwertl 于 2009-12-16 22:51 编辑 ]

TOP

回复 5楼 的帖子

运行的哪个代码?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

这字符在dos 下用type才显示出,在记事本下打开是没有的。

TOP

  1. @echo off
  2. for /f "tokens=4 delims= " %%i in ('findstr /i ahjoe c:\bat\ipload\1.txt') do (
  3.     set ip=%%i
  4.     setlocal enabledelayedexpansion
  5.     set ip=!ip:~0,-2!
  6.     echo !ip!
  7.     endlocal
  8. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

谢谢!测试了下还是去不掉这两个符号。
执行结果:
C:\bat>for /F "tokens=4 delims= " %i in ('findstr /i ahjoe c:\bat\ipload\1.txt')
do (
set ip=%i
setlocal enabledelayedexpansion
set ip=!ip:~0,-2!
echo !ip!
endlocal
)
C:\bat>rem for /f "tokens=4" %i in ('findstr /i ahjoe c:\bat\ipload\1.
txt') do set ip=%i
C:\bat>pause
Press any key to continue . . .
C:\bat>sed -i "s/\(HostRestrictions=.*\\\/\).*/\1116.18.166.76íí/g" "C:\bat\e.ini"             这行的%ip%就有这个怪符号了
C:\bat>

[ 本帖最后由 qwertl 于 2009-12-16 23:36 编辑 ]

TOP

回复 9楼 的帖子

能否把c:\bat\ipload\1.txt压缩一下,然后以附件的形式传上来看看?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

明天研究了,谢谢各位,晚安!

[ 本帖最后由 qwertl 于 2009-12-17 00:17 编辑 ]

TOP

  1. @echo off
  2. for /f "delims=" %%i in ('sed -n "s/.*ahjoe.*[^0-9]\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\).*/\1/p" c:\bat\ipload\1.txt') do (
  3.     set ip=%%i
  4. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

试了下楼上的代码确实可以了!谢谢!
学习了!但'sed -n "s/.*ahjoe.*[^0-9]\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\).*/\1/p" c:\bat\ipload\1.txt'
这条命令看不懂,每次都是仅获取指定计算机名的IP吗

[ 本帖最后由 qwertl 于 2009-12-17 20:27 编辑 ]

TOP

回复 13楼 的帖子

这个属于正则表达式的基础内容了,参考:正则表达式简介
http://bbs.bathome.net/thread-4485-1-1.html

你想获取其他计算机名,那就更改ahjoe吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表