Board logo

标题: [文本处理] [已解决]findstr中的正则表达式是标准的正则表达式吗? [打印本页]

作者: sniperhgy    时间: 2009-6-24 10:21     标题: [已解决]findstr中的正则表达式是标准的正则表达式吗?

我有一批处理,内容如下:
  1. @echo off
  2. for /f "delims=" %%a in ('find /i ":" TM2008.lnk ^| findstr /i "^[a-z]:"') do echo %%a
  3. echo.&pause
复制代码
运行后结果为:
  1. L:・
  2. L:・
  3. L:ァ
  4. L:ァ
  5. L:・
  6. C:\Program Files\Tencent\TM2008\Bin\TM.exe
  7. 続行するには何かキーを押してください . . .
复制代码
,但如果将原来的批处理作一下改动
findstr /i "^[a-z]:"  ---->  findstr /i "^[a-z]:\\"
就一个结果也得不到,我认为应该可以找到C:\的阿,请教知道的朋友,
帮忙看看是怎么回事,谢谢

[ 本帖最后由 sniperhgy 于 2009-6-24 13:05 编辑 ]
作者: keen    时间: 2009-6-24 11:04     标题: 回复 1楼 的帖子

  1. @echo off
  2. for /f "delims=" %%a in ('find /i ":" a.txt ^| findstr /i "^[a-z]:\\."') do echo %%a
  3. echo.&pause
复制代码

作者: tireless    时间: 2009-6-24 11:19

如果是获取 .lnk 的目标路径,可以这样:
  1. @echo off
  2. for /f "skip=3 delims=" %%a in ('find ":\" TM2008.lnk') do echo %%a
  3. 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