批次:转义

BATCH: Escaping

我正在尝试制作简单的批处理文件,它将所有带有 width="10 字符串的行从 .htm 文件复制到 .txt 但我在字符串

中使用双引号 " 符号

我的代码:

for /F "tokens=*" %%g in ('FINDSTR /C:"width=\"10" "htmfile.htm"') do (echo %%g >> test.txt)


'FINDSTR /C:"width=' 这仍然有效,但是当我添加 " 时,它不再有效了。我添加了转义 \" 并且还尝试了 ^" 但它仍然无法正常工作。


我很乐意提供任何帮助。

您需要首先确保 cmd.exe 解析器将正确的匹配字符串发送到 FindStr/C:"width=\""。为此,我建议使用标准转义字符转义结束双引号,插入符号 ^.

我真的不明白 For 循环的目的,(除非你只是想删除任何前导空格):

@Echo Off
FindStr /C:"width=\"10^" "htmfile.htm" 2>Nul >"test.txt"
Pause

因为 For 括号的内容是 运行 通过另一个 cmd.exe 实例你需要用另外两个插入符来转义插入符转义字符:

@Echo Off
For /F "Tokens=*" %%A In ('FindStr /C:"width=\"10^^^" "htmfile.htm" 2^>Nul'
) Do (Echo %%A)>>"test.txt"
Pause