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

[注册表类] 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 内存不足,是过滤的字符太长了吗

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

TOP

回复 2# bailong360


    好的,谢谢!
你看我写了代码,过滤的时候提示findstr :内存不足是什么原因。

TOP

确实是过滤的字符串太长了。
可以考虑用 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
复制代码
1

评分人数

TOP

回复 4# WHY


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

TOP

返回列表