Board logo

标题: [文本处理] [已解决]批处理中findstr命令怎样截取指定字符串? [打印本页]

作者: lovealei    时间: 2011-8-26 14:42     标题: [已解决]批处理中findstr命令怎样截取指定字符串?

本帖最后由 lovealei 于 2011-8-27 09:37 编辑
  1. 2011-08-20 01:49:40 29696328 INFO  收到TCP命令101--,530427199305060730,会员用户(i1:0, i2:0, i3:0, ClientState:0, s1:张哲(读), s2:530427199305060730, s3:张哲(读);530427199305060730;11;1;530427199305060730;;;;;-2209190400000;0;94555341023936144802;530427199305060730;;;;;;;AH9wONdF4Yw=;;;1;1313776213578;, IsRemove:0)
复制代码
如何用findstr 截取 “张哲” 这二个字,
  1. set /p USERID=
  2. for /f "delims=:" %%i in ('findstr /i "%USERID%" "logs.log"^|findstr /i "s1:"') do (
  3.     set name=%%i )
复制代码
这样为什么不能截取到呢


USEID = 530427199305060730
如果要截取s3:张哲(读); 中的 张哲 要怎么写呢?以那个为分隔符,以那个作为搜索目标
作者: lxzzr    时间: 2011-8-26 18:28

如果要截取s3:张哲(读); 中的 张哲 要怎么写呢?以那个为分隔符,以那个作为搜索目标...
  1. @echo off
  2. set var="2011-08-20 01:49:40 29696328 INFO  收到TCP命令101--,530427199305060730,会员用户(i1:0, i2:0, i3:0, ClientState:0, s1:张哲(读), s2:530427199305060730, s3:张哲(读);530427199305060730;11;1;530427199305060730;;;;;-2209190400000;0;94555341023936144802;530427199305060730;;;;;;;AH9wONdF4Yw=;;;1;1313776213578;, IsRemove:0)"
  3. %var:*s3:=set var=%
  4. for /f "tokens=1 delims=(;" %%a in ("%var:~0,-2%") do echo %%a
  5. pause
复制代码

作者: lovealei    时间: 2011-8-26 19:32

本帖最后由 lovealei 于 2011-8-26 19:34 编辑
  1. 2011-08-20 01:49:40 29696328 INFO  收到TCP命令101--,530427199305060730,会员用户(i1:0, i2:0, i3:0, ClientState:0, s1:张哲(读), s2:530427199305060730, s3:张哲(读);530427199305060730;11;1;530427199305060730;;;;;-2209190400000;0;94555341023936144802;530427199305060730;;;;;;;AH9wONdF4Yw=;;;1;1313776213578;, IsRemove:0)
复制代码
找是找到了,但是VAR里的内容不在是批处理里面,而是一个文件 logs.log 而且要满足条件 USERID=530427199305060730 时
作者: lxzzr    时间: 2011-8-26 19:48

本帖最后由 lxzzr 于 2011-8-26 19:56 编辑

回复 3# lovealei

什么叫“满足条件 USERID=530427199305060730 ”,我没发现“USERID”字符串啊

明白你的意思了
  1. @echo off
  2. set /p USERID=input:
  3. for /f "delims=" %%a in ('findstr "%USERID%" logs.log') do set var="%%a"
  4. %var:*s3:=set var=%
  5. for /f "tokens=1 delims=(;" %%a in ("%var:~0,-2%") do echo %%a
  6. pause
复制代码

作者: lovealei    时间: 2011-8-27 09:36

谢谢版主,达到我需要的目的了




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2