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

[注册表类] findstr 如何查找出长度满足指定字符个数的行?

[复制链接]
发表于 2016-2-2 21:59:04 | 显示全部楼层 |阅读模式
本帖最后由 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 内存不足,是过滤的字符太长了吗
发表于 2016-2-2 22:07:01 | 显示全部楼层
  1. findstr "^....................$" test.txt
复制代码
 楼主| 发表于 2016-2-2 22:08:23 | 显示全部楼层
回复 2# bailong360


    好的,谢谢!
你看我写了代码,过滤的时候提示findstr :内存不足是什么原因。
发表于 2016-2-2 22:52:33 | 显示全部楼层
确实是过滤的字符串太长了。
可以考虑用 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技术 +1 收起 理由
freesoft00 + 1 谢谢

查看全部评分

 楼主| 发表于 2016-2-2 23:43:09 | 显示全部楼层
回复 4# WHY


    哦,好的,谢谢!
如果把findstr换为find是不是没有这个字符限制?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 03:07 , Processed in 0.019195 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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