Board logo

标题: [文件操作] 批处理如何判断文本中含有特定的字符串 [打印本页]

作者: hanwudiliu    时间: 2009-6-3 17:07     标题: 批处理如何判断文本中含有特定的字符串

  1. @echo off
  2. for /f "skip=2 delims=, tokens=4,5" %%i in (1.txt) do echo %%i %%j|if %%i=="nihao" %%j=="CB-01   " (echo chenggong ) else echo (shiban)
  3. pause
复制代码
1.txt内容如下:
eer,dfdf
dfdfdf,
    11,2,3,"nihao“,"CB-01   ",yyll
   df,fd,fd,fd,fd,fd,fd,fd,fd,fdf,d,f
   df,df,dfdf,f,d,f

等等有很多数据。
我只想要判读出有没有所要的"nihao“,"CB-01   ",是否存在但是这个批处理为什么不能成功!!!他们存在特定的位置不变
作者: namejm    时间: 2009-6-3 17:47

  1. @echo off
  2. findstr /i "nihao CB-01" 1.txt
  3. pause
复制代码

作者: 随风    时间: 2009-6-3 17:59

不知楼主是想要查找 包含 nihao 或 cb-01 的行,还是 nihao cb-01 必须在一起的行?
另外你样本中 nihao cb-01 中间的逗号和左右的引号也文本内容吗?
而且又有全角引号,又有半角引号,还不成对的??
还请给出标准的样本,2楼的代码是匹配 含有 nihao 或者 cb-01 的行
作者: hanwudiliu    时间: 2009-6-4 09:56

要查找的是 "nihao" , "CB-01   "两个字符都其中也包括引号并且在其前面还有一个空格
  1. @echo off
  2. for /f "skip=2 delims=, tokens=4,5" %%i in (1.txt) do if  "%%i"==" "nihao"" (echo %%i )
复制代码
现在可以找到前面的了,但是怎么来判断都是满足呢?
作者: hanwudiliu    时间: 2009-6-4 10:20

还有就是问一下!!!查找 "CB-01   ",时用" "CB-01   "”表示时就没办法判断!!!其中原因就是CB-01后面多出的空格,不知道怎么表示!!!
作者: hanwudiliu    时间: 2009-6-4 11:09     标题: 如何判断文本中含有特定的字符串

现把要取的文本截图发出,用红色标记的要的字符串
作者: zqz0012005    时间: 2009-6-4 11:10

你早点说清楚不就完事了
  1. findstr /c:" \"nihao\", \"CB-01   \"" 1.txt
复制代码

or
  1. find " ""nihao"", ""CB-01   """ 1.txt
复制代码

[ 本帖最后由 zqz0012005 于 2009-6-4 11:15 编辑 ]
作者: hanwudiliu    时间: 2009-6-4 11:25

谢谢楼上的大哥,但是我要的是找到后给出找到的结果呀;否则就是失败输出没有找到!!现在这样只是输出了如何判断呢?
最好用for语句实现
作者: 随风    时间: 2009-6-4 20:03

用 && 和 || 判断
作者: inittab    时间: 2009-6-4 21:43

可以用%%~i 去掉双引号再判断
  1. @echo off
  2. for /f "tokens=4,5 delims=," %%i in (1.txt) do (
  3. if "%%~i"=="nihao" (if "%%~j"=="CB-01  " (echo\chenggong)) else echo\shiban
  4. )
复制代码

[ 本帖最后由 inittab 于 2009-6-4 21:44 编辑 ]
作者: 随风    时间: 2009-6-4 22:46     标题: 回复 10楼 的帖子

去掉引号后就不够严谨了,如果文本含有不带引号的 nihao 字符串呢? (^_^)
而且他需判断的还有全角引号和逗号。
  1. @echo off
  2. find """nihao“,""CB-01   """ a.txt>nul&&echo 有||echo 无
  3. pause
复制代码

作者: hanwudiliu    时间: 2009-6-8 10:36

谢谢楼上各位大哥的回答,但是目前通过for语句还是没有实现!!请多帮忙




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