Board logo

标题: [注册表类] findstr 如何查找出长度满足指定字符个数的行? [打印本页]

作者: freesoft00    时间: 2016-2-2 21:59     标题: findstr 如何查找出长度满足指定字符个数的行?

本帖最后由 pcl_test 于 2016-2-3 00:20 编辑

比如结果最少是20个字符,数字和字母组合,还有多的,但是只想显示20个字符的,应该如何写关键字呢。
findstr /i ".................."这样写吗?

应该是不对的,因为这样过滤后还是全部显示了。
  1. @echo off
  2. for /f "tokens=2*" %%i in ('2^>nul reg query HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices /v "\DosDevices*"') do (
  3. reg query HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices|findstr /i "%%j"
  4. )
  5. pause
复制代码
过滤后提示findstr 内存不足,是过滤的字符太长了吗
作者: bailong360    时间: 2016-2-2 22:07

  1. findstr "^....................$" test.txt
复制代码

作者: freesoft00    时间: 2016-2-2 22:08

回复 2# bailong360


    好的,谢谢!
你看我写了代码,过滤的时候提示findstr :内存不足是什么原因。
作者: WHY    时间: 2016-2-2 22:52

确实是过滤的字符串太长了。
可以考虑用 set 截取字符串,比如要匹配20字符的字符串,判断21位以后为空,第20位非空
举例:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=2*" %%i in ('2^>nul reg query HKLM\SYSTEM\MountedDevices /v "\DosDevices*"') do (
  4.     set "s=%%j"
  5.     if "!s:~20!" == "" if not "!s:~19,1!" == "" echo !s!
  6. )
  7. pause
复制代码

作者: freesoft00    时间: 2016-2-2 23:43

回复 4# WHY


    哦,好的,谢谢!
如果把findstr换为find是不是没有这个字符限制?




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