Batch file 批处理:转义

Batch file 批处理:转义,batch-file,for-loop,escaping,findstr,Batch File,For Loop,Escaping,Findstr,我试图创建一个简单的批处理文件,将所有带有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解析器将正确的匹

我试图创建一个简单的批处理文件,将所有带有
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关闭
FindStr/C:“宽度=\”10^“htmfile.htm”2>Nul>“test.txt”
暂停
由于括号的
内容是通过另一个
cmd.exe
实例运行的,因此您需要使用另外两个插入符号转义插入符号转义字符:

@Echo关闭
对于('FindStr/C:'width=\'10^^^^“htmfile.htm”2^>Nul'中的/F“Tokens=*”%%A
)Do(Echo%%A)>>“test.txt”
暂停

Ha,你比我快了几秒钟,我刚才也在打字。。。干得好!甚至可以在不使用
/C
选项的情况下执行此操作<代码>搜索宽度=\“10 blah.htm