使用 findstr.exe 时如何正确转义搜索字符串中的引号?
Example:
findstr /misc:"namespace=\"" *.cs > ns.txt
这会输出到控制台,而不是我指定的文件。
我直接在命令行上执行此操作,而不是实际上在批处理文件中执行此操作,尽管该信息也可能有用。
如果我错了,请纠正我,但我想我已经弄清楚了:
findstr.exe /misc:^"namespace=\^"^" *.cs > ns.txt
即使搜索字符串中有空格,这似乎也会给出正确的输出。它允许文件重定向、管道和同一 findstr.exe 调用中的其他文字正常工作。
我的问题中的原始命令不起作用,因为 cmd.exe 和 findstr.exe 对"
特点。我最终在 cmd.exe 的处理中得到了一组不匹配的引号。
我的答案中的新命令有效,因为^"
允许引用从 cmd.exe 传递到 findstr.exe,并且\"
告诉 findstr.exe 出于命令处理目的忽略该引号,并将其视为字符文字。
Edit:
好吧,我的解决方案是对的,但它正确的原因却完全错误。我写了一个小程序来测试一下。
当我传递错误的命令行时,我发现 cmd.exe 将此输入传递给程序:
test.exe /misc:namespace=" *.cs > ns.txt
正确转义字符后,cmd.exe 将此输入传递给程序(并将输出重定向到文件):
test.exe /misc:namespace=" *.cs
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)