标题: [文本处理] [已解决]批处理命令findstr怎样搜索指定文件匹配开头和结尾? [打印本页]
作者: freesoft00 时间: 2015-10-23 20:12 标题: [已解决]批处理命令findstr怎样搜索指定文件匹配开头和结尾?
本帖最后由 freesoft00 于 2015-10-24 12:59 编辑
dir /b |findstr /i "\<win 7z\>"
我的本意是想搜索目录中所有win开头,7z结尾的文件
另外一个是比如文件内容如下
Microsoft Visual C++ 2005 Redistributable (x64)
Microsoft Visual C++ 2012 x86 Minimum Runtime
我要搜索Microsoft 开头,(x64) 结尾,这个应该如何用findstr匹配呢?
这个问题是我使用wmic命令得到的结果,它导出的文本是unicode码,这个批处理无法处理,而且每行的文本也许有不等的空格。
不知道wmic导出的结果是否可以是ansi码?空格的问题如何解决
两个例子是一个问题,我只是举例说一下,防止我表述不清楚。
作者: freesoft00 时间: 2015-10-23 20:31
本帖最后由 freesoft00 于 2015-10-23 20:33 编辑
复制代码
好像知道了,是不是这样复制代码
这样的关键字是吧?
作者: CrLf 时间: 2015-10-23 20:42
素的!
作者: freesoft00 时间: 2015-10-23 20:43
本帖最后由 freesoft00 于 2015-10-23 21:12 编辑
“^Microsoft.*(x64)$" 搜索Microsoft Visual C++ 2005 Redistributable (x64)不行,因为这个文本文件的这一样后面还有多余的空格,不知道是不是因为空格的影响无法搜索到
我又测试,把多余的空格删除也不行,看来是我的关键词没有写对
唉,没有看,我的文本不是很ansi码,改了就好了。
作者: freesoft00 时间: 2015-10-23 20:49
再多问一个:
askjq123lkjl3412sdf9
类似的纯字母和数字组合的目录名称,字符格式是20,如何dir/ad findstr匹配出来
作者: 依山居 时间: 2015-10-23 21:00
es.exe 搜索很快的,也支持正则。
可以试试。
作者: 依山居 时间: 2015-10-23 21:05
findstr 不支持完整的正则功能。
作者: freesoft00 时间: 2015-10-23 21:13
回复 6# 依山居
多谢,我只是想在没有第三方的时候看是否可以实现
作者: CrLf 时间: 2015-10-23 21:33
- @echo off&setlocal enabledelayedexpansion
- set "a="
- for /l %%a in (1 1 20) do set "a=!a![0-9a-z]"
- dir /b | findstr /ix "!a!"
- pause
复制代码
作者: 依山居 时间: 2015-10-23 21:47
回复 9# CrLf
findstr 不支持[0-9]* 这样匹配是吧?
作者: freesoft00 时间: 2015-10-23 21:49
回复 9# CrLf
感谢!不过提示:FINDSTR: 搜索字符串太长
作者: freesoft00 时间: 2015-10-23 21:53
回复 9# CrLf
我搜索文本的问题,文本是用wmic导出的。
wmic product get name>22.txt
但是wmic命令导出的是unicode码,是否可以导出为ansi码不用第三方软件的情况下?
导出的文件每行的末尾有不等的空格,这个在用(x64)$这个关键词的时候就无法匹配到了,是否可以去掉空格?
上面是导出为文本然后for配合findstr过来,如果是直接用|后面接findstr如何把后面多余的空格解决掉
wmic product get name|findstr /i "^Microsoft.*(x64)$"
作者: pcl_test 时间: 2015-10-23 22:07
回复 5# freesoft00 - //&cls&dir /b |cscript -nologo -e:jscript "%~f0"&pause&exit/b
- while(!WScript.StdIn.AtEndOfStream) {
- var str = WScript.StdIn.ReadLine()
- if (/^[0-9a-z]{20}$/i.test(str))WSH.Echo(str);
- }
复制代码
作者: pcl_test 时间: 2015-10-23 22:15
回复 12# freesoft00
findstr /i "^Microsoft.*(x64)[^a-z0-9]*$"
作者: freesoft00 时间: 2015-10-23 22:20
回复 14# pcl_test
确实可以了。看来还是自己思想不灵活呀。想不到这样去处理。
作者: pcl_test 时间: 2015-10-23 22:22
本帖最后由 pcl_test 于 2015-10-23 22:27 编辑
回复 15# freesoft00
严谨些的- //&cls&wmic product get name |cscript -nologo -e:jscript "%~f0"&pause&exit/b
- while(!WScript.StdIn.AtEndOfStream) {
- var str = WScript.StdIn.ReadLine()
- if (/^Microsoft.+?\(x64\)\s*$/i.test(str))WSH.Echo(str);
- }
复制代码
作者: freesoft00 时间: 2015-10-23 22:29
本帖最后由 freesoft00 于 2015-10-23 22:31 编辑
回复 16# pcl_test
这是vbs代码?
我保存为vbs,提示如下:- ---------------------------
- Windows Script Host
- ---------------------------
- 脚本: G:\sdssf.vbs
- 行: 1
- 字符: 1
- 错误: 缺少语句
- 代码: 800A0400
- 源: Microsoft VBScript 编译器错误
-
- ---------------------------
- 确定
- ---------------------------
复制代码
作者: pcl_test 时间: 2015-10-23 22:30
本帖最后由 pcl_test 于 2015-10-23 22:33 编辑
回复 17# freesoft00
bat+js,保存为批处理文件运行
作者: freesoft00 时间: 2015-10-23 22:32
回复 18# pcl_test
保存为bat,运行没有结果也没有错误。只提示按任意键退出
作者: pcl_test 时间: 2015-10-23 22:34
回复 19# freesoft00
已修改
作者: freesoft00 时间: 2015-10-23 22:47
ok,可以了
作者: CrLf 时间: 2015-10-23 22:52
回复 10# 依山居
支持 *,但不支持 {N}
作者: WHY 时间: 2015-10-23 23:31
wmic 支持通配符,如果要去掉后面的空格,可以换一种格式输出
wmic product where "name like 'microsoft%(x64)'" get name /format:csv
作者: freesoft00 时间: 2015-10-24 07:47
回复 23# WHY
Node - www(计算机名称)
ERROR:
Description = Invalid query
运行后的错误代码
作者: WHY 时间: 2015-10-24 12:45
回复 24# freesoft00
那个是在命令提示符输入的~~放在批处理中运行,%要改成%%
作者: WHY 时间: 2015-10-24 12:49
回复 24# freesoft00
好吧,批处理大概像这样子:- @echo off
- for /f "delims=" %%i in ('wmic product where "name like 'microsoft%%(x64)'" get name /format:list') do (
- for /f "tokens=1*delims==" %%i in ("%%i") do echo;%%j
- )
- pause
复制代码
作者: freesoft00 时间: 2015-10-24 12:59
回复 26# WHY
多谢 !,ok了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |