找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 33035|回复: 4

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

[复制链接]
发表于 2011-8-26 14:42:26 | 显示全部楼层 |阅读模式
本帖最后由 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:张哲(读); 中的 张哲 要怎么写呢?以那个为分隔符,以那个作为搜索目标

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-8-26 18:28:21 | 显示全部楼层
如果要截取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
复制代码
 楼主| 发表于 2011-8-26 19:32:51 | 显示全部楼层
本帖最后由 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 时
发表于 2011-8-26 19:48:32 | 显示全部楼层
本帖最后由 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
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-8-27 09:36:52 | 显示全部楼层
谢谢版主,达到我需要的目的了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:03 , Processed in 0.027486 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表