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

[文本处理] 【已解决】批处理命令find如何查找带引号的字符串?

[复制链接]
发表于 2014-3-3 20:10:45 | 显示全部楼层 |阅读模式
本帖最后由 ge_xin_yu 于 2014-3-4 13:09 编辑

test.txt:
  1. <name="dexterous" />
复制代码
查找其中的字符串name="dexterous",代码如下:
  1. @echo off
  2. find /n "name="dexterous"" test.txt
  3. pause
复制代码
提示”找不到文件“,显然是字符串中包含引号所致,于是用^转义,如下:
  1. @echo off
  2. find /n "name=^"dexterous^"" test.txt
  3. pause
复制代码
但是仍然提示”找不到文件“,用\转义也不行。糊涂,再测试发现除了引号外的其他特殊字符比如<&>等,即便不转义也能正常查找,转义之后反而查找不到。而引号无论转不转义都不行。请大家帮忙看看,深表感谢!!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-3-3 20:35:19 | 显示全部楼层
find不支持正则
试试用双引号本身转义双引号:
  1. find /i "<name=""dexterous"" />" < test.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-3-3 21:49:43 | 显示全部楼层
find不支持正则
试试用双引号本身转义双引号:
apang 发表于 2014-3-3 20:35


谢谢,确实如此。奇怪为什么find转义必须要用双引号呢?^号在find中也没被用于特殊用途啊?
发表于 2014-3-4 09:35:14 | 显示全部楼层
你还在用bat么? powershell祖师爷用智慧,为我们创造了【无需在原始字符串中插入转义符,不破坏原始字符串可读性】的妙法!

参见  [原创教程] powershell单双引号之妙!     http://www.bathome.net/thread-27666-1-2.html
发表于 2014-3-4 09:45:16 | 显示全部楼层
回复 3# ge_xin_yu


    不光find命令如此,还有很多其它命令也是这样的,记住就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 01:05 , Processed in 0.031029 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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