要使用Xidel脚本,在cmd上转义哪些字符

要使用Xidel脚本,在cmd上转义哪些字符,cmd,xidel,Cmd,Xidel,用于刮取HTML: for /f "usebackqDELIMS=" %a in (`^"xidel -s file.html -e 'json(//script[@type="application/ld+json"])/(string)()'^"`) do set "string=%a" 在CMD输出中运行时,会给出: /(字符串)(“`”)此时意外 我假设我需要转义一些字符,在本文档之后,我尝试了许多选项,对各种字符使用胡萝卜,对[]使用反斜杠,但不断出现更多错误 是否有某个字符需要转义

用于刮取HTML:

for /f "usebackqDELIMS=" %a in (`^"xidel -s file.html -e 'json(//script[@type="application/ld+json"])/(string)()'^"`) do set "string=%a"
在CMD输出中运行时,会给出:

/(字符串)(“`”)此时意外

我假设我需要转义一些字符,在本文档之后,我尝试了许多选项,对各种字符使用胡萝卜,对[]使用反斜杠,但不断出现更多错误

是否有某个字符需要转义或多个转义,或者根本不是这样?

我现在明白了。在这种情况下,您必须修复引号(请参见“9”和“10”):


让Xidel为您分配变量。

如果您试图在批处理脚本中使用此变量,您的第一个问题是需要将
%a
更改为
%a
。其次,
(`&`)
需要更改为
('
&
。你知道为什么它会将其垃圾处理成单独的字符串,而不是全部放在一个字符串中吗?现在它会在每行设置一个新字符串,所以技术上只保存最后一个字符串。我假设你指的是Github问题。然后你可能忘了将字符串加入类型项:
…-e“string:=json(//script[@type='application/ld+json'])/join((体裁)(,,,)“…
。顺便说一句,如果你对这个答案满意,你能用大拇指竖起这个答案吗?(并以同样的方式关闭Github问题)它在cmd上工作,但当我在最终批处理脚本中包含它时,它给出的
文件名目录名或卷标语法不正确
错误。
FOR /F "delims=" %%A IN ('xidel -s file.html -e "json(//script[@type='application/ld+json'
])/(string)()"') DO SET "string=%%A"
FOR /F "delims=" %%A IN ('xidel -s file.html -e "string:=json(//script[@type='application/
ld+json'])/(string)()" --output-format^=cmd') DO %%A