标题: [文本处理] [已解决]findstr中的正则表达式是标准的正则表达式吗? [打印本页]
作者: sniperhgy 时间: 2009-6-24 10:21 标题: [已解决]findstr中的正则表达式是标准的正则表达式吗?
我有一批处理,内容如下:- @echo off
- for /f "delims=" %%a in ('find /i ":" TM2008.lnk ^| findstr /i "^[a-z]:"') do echo %%a
- echo.&pause
复制代码
运行后结果为:- L:・
- L:・
- L:ァ
- L:ァ
- L:・
- C:\Program Files\Tencent\TM2008\Bin\TM.exe
- 続行するには何かキーを押してください . . .
复制代码
,但如果将原来的批处理作一下改动
findstr /i "^[a-z]:" ----> findstr /i "^[a-z]:\\"
就一个结果也得不到,我认为应该可以找到C:\的阿,请教知道的朋友,
帮忙看看是怎么回事,谢谢
[ 本帖最后由 sniperhgy 于 2009-6-24 13:05 编辑 ]
作者: keen 时间: 2009-6-24 11:04 标题: 回复 1楼 的帖子
- @echo off
- for /f "delims=" %%a in ('find /i ":" a.txt ^| findstr /i "^[a-z]:\\."') do echo %%a
- echo.&pause
复制代码
作者: tireless 时间: 2009-6-24 11:19
如果是获取 .lnk 的目标路径,可以这样:- @echo off
- for /f "skip=3 delims=" %%a in ('find ":\" TM2008.lnk') do echo %%a
- pause
复制代码
作者: zqz0012005 时间: 2009-6-24 11:45
echo 1\2|findstr "\\" ok
echo 1\2|findstr "1\\" ok
echo 1\2|findstr "1\\2" ok
echo 1\2|findstr "1\\\\" ok
echo 1\2|findstr "1\\\\2" error
echo 1\2|findstr "^1\\" error,注意上面不加^时ok
echo 1\2|findstr "^1\\\\" ok
echo 1\2|findstr "^1\\\\2" error
echo 1\2|findstr "^1\\2" ok
echo 1\2|findstr "^1\\." ok
echo 1\|findstr "^1\\." error
echo 1\|findstr "^1\\\\" ok
看来要查找的字符串含有\时,如果目标字符串的\后面还有内容,则搜索字符串\除了要变成\\(本身的转义要求),它后面需要再加一个字符;或者不加字符,但把\变成\\\\。
再次领悟到findstr问题真不少。BS微软的缩水。
作者: 随风 时间: 2009-6-24 12:11
echo 1\2|findstr /b "1\\"
用开关 /b 和用^有区别。
作者: tireless 时间: 2009-6-24 12:13
双引号也会影响
echo 1\2 | findstr ^^1\\2
[ 本帖最后由 tireless 于 2009-6-24 12:15 编辑 ]
作者: zqz0012005 时间: 2009-6-24 12:31
3楼说的是将搜索字符串放在引号中的情况。
双引号是有影响,但楼上那个例子不能说明,只是预处理的要求(^转义)。
这样比较:
echo 1\2|findstr "^1\\\\"
echo 1\2|findstr ^^1\\\\
[ 本帖最后由 zqz0012005 于 2009-6-24 12:32 编辑 ]
作者: sniperhgy 时间: 2009-6-24 13:04
谢谢几位朋友的回答 ^_^
[ 本帖最后由 sniperhgy 于 2009-6-24 13:07 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |