标题: [文本处理] 【已解决】求助批处理findstr命令用变量代替带双引号的搜索字符串时无法正确查找 [打印本页]
作者: ge_xin_yu 时间: 2014-3-3 22:01 标题: 【已解决】求助批处理findstr命令用变量代替带双引号的搜索字符串时无法正确查找
本帖最后由 pcl_test 于 2016-8-5 22:55 编辑
批处理命令findstr搜索字符串为变量引起的问题
test.txt:- <element id="10" type="exercise" name="dismal" />
复制代码
搜索其中的字符串name=”dismal“,代码如下:- @echo off
- set word=name="dismal"
- echo %word%
- findstr %word% 1.txt
- echo %errorlevel%
- pause
复制代码
返回值为1,不成功。但是变量word是赋值成功了的。如果不使用变量,直接用字符串查找,却是可以的。如下:- @echo off
- findstr "name=\"dismal\"" 1.txt
- echo %errorlevel%
- pause
复制代码
这就怪了,究竟是什么地方的问题呢?请大家指点,深表感谢!!
作者: apang 时间: 2014-3-3 22:55
本帖最后由 apang 于 2014-3-4 00:09 编辑
如果不加外围引号,name="dismal" 中的等号需要转义,否则会被认为是命令分割符
findstr name^=\"dismal\" 1.txt
回答错误,这里的等号不需要转义,引号需要转义。
作者: ge_xin_yu 时间: 2014-3-3 23:03
本帖最后由 ge_xin_yu 于 2014-3-3 23:08 编辑
如果不加外围引号,name="dismal" 中的等号需要转义,否则会被认为是命令分割符
findstr name^=\"dismal\" ...
apang 发表于 2014-3-3 22:55
谢谢!但是我用变量作为搜索字符串该怎么处理呢?如何处理%word%中的等号呢?
作者: apang 时间: 2014-3-3 23:06
set "var=a^=\"bc\""
作者: ge_xin_yu 时间: 2014-3-3 23:11
本帖最后由 ge_xin_yu 于 2014-3-3 23:15 编辑
set "var=a^=\"bc\""
apang 发表于 2014-3-3 23:06
谢谢!按您的方法修改如下,可以正常搜索。但是word却被赋值为name=\"dismal\",正常应该是name="dismal"啊。- @echo off
- set "word=name^=\"dismal\""
- echo %word%
- findstr %word% 1.txt
- echo %errorlevel%
- pause
复制代码
作者: ge_xin_yu 时间: 2014-3-3 23:18
如果不加外围引号,name="dismal" 中的等号需要转义,否则会被认为是命令分割符
findstr name^=\"dismal\" ...
apang 发表于 2014-3-3 22:55
试了一下,即便=号不转义,findstr也可以正常搜索。
作者: apang 时间: 2014-3-3 23:31
回复 6# ge_xin_yu
哦,试了下,不加^确实可以,是我想当然了
作者: apang 时间: 2014-3-3 23:38
谢谢!按您的方法修改如下,可以正常搜索。但是word却被赋值为name=\"dismal\",正常应该是name= ...
ge_xin_yu 发表于 2014-3-3 23:11
- @echo off
- set word=name="dismal"
- echo %word%
- findstr %word:"=\"% 1.txt
- echo %errorlevel%
- pause
复制代码
作者: PowerShell 时间: 2014-3-4 09:36
你还在用bat么? powershell祖师爷用智慧,为我们创造了【无需在原始字符串中插入转义符,不破坏原始字符串可读性】的妙法!
参见 [原创教程] powershell单双引号之妙! http://www.bathome.net/thread-27666-1-2.html
作者: ge_xin_yu 时间: 2014-3-4 13:06
你还在用bat么? powershell祖师爷用智慧,为我们创造了【无需在原始字符串中插入转义符,不破坏原始字符串 ...
PowerShell 发表于 2014-3-4 09:36
感谢!!
作者: ge_xin_yu 时间: 2014-3-4 13:07
apang 发表于 2014-3-3 23:38
可以正常使用,非常感谢!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |