Board logo

标题: [文本处理] cmd双引号嵌套双引号出问题 [打印本页]

作者: wanghan519    时间: 2023-9-19 05:52     标题: cmd双引号嵌套双引号出问题

从浏览器开发模式,网络,里复制一条请求为,适用于cmd的curl命令,比如:
  1. curl "https://club.excelhome.net/plugin.php?id=k_misign:sign" ^
  2.   -H "authority: club.excelhome.net" ^
  3.   -H "sec-ch-ua-platform: ^\^"Windows^\^"" ^
  4.   -H "sec-fetch-dest: document"
复制代码
把这段放到cmd里运行会出错,发现其他行都比较正常,但"Windows"这种双引号里嵌套双引号的行会出错,^放在最后也不能换行,如果echo这行结果也很奇怪,请问这种嵌套双引号的情况该如何写,谢谢
作者: 77七    时间: 2023-9-19 10:09

  1.   -H "sec-ch-ua-platform: "Windows"" ^
  2.   -H "sec-ch-ua-platform: \"Windows\"" ^
  3.   -H "sec-ch-ua-platform: ^\^"Windows^\^" ^
  4.   -H "sec-ch-ua-platform: ^\^"Windows^\^""" ^
复制代码

  1. @echo off
  2. echo ""^
  3. 123
  4. echo=
  5. echo "^
  6. 123
  7. echo=
  8. echo "^"^
  9. 123
  10. echo=
  11. echo "^""^
  12. 123
  13. pause
复制代码



我不是很了解,具体可以参考一下buyiyang大佬的帖子 ,大概是一类问题,引号的处理for /f 与 cmd /c 的 command 处理(建议站长移到教程版块)
作者: wanghan519    时间: 2023-9-19 10:28

回复 2# 77七


    好的,多谢,我去学习
作者: Five66    时间: 2023-9-19 15:56

额,cmd双引号嵌套解析规则莫名奇妙的,有时候最短,有时候递归,有时候还得看个数....
不用双引号引起来直接^转义感觉还简单点
作者: wanghan519    时间: 2023-9-19 16:20

回复 4# Five66


    是啊,被搞的头大,最后发现edge调试里复制出来的curl命令,存在上面这个问题,firefox复制出来的没问题,不求甚解凑合用吧,这双引号真的太奇怪了。。。
作者: buyiyang    时间: 2023-9-19 20:48

回复 2# 77七


    一直以为,没有开启变量延迟的情况下,一对双引号内的特殊字符才不会被处理,原来只要有左"开头(直到右"或语句末)就行了
  1. echo,"&|^
复制代码
所以左"后的转义符无效,"^"Windows^"",左"前可以转义,
  1. echo,^"&|^
复制代码

作者: buyiyang    时间: 2023-9-19 20:51

回复 4# Five66


    我感觉都是最短,哪些时候会递归、看个数?
作者: Five66    时间: 2023-9-19 23:10

回复 7# buyiyang


    只是个人的理解,调用外部命令的参数的双引号的话还好,内部命令的就不知怎么回事了
比如
set "a=""""""&"b"&c"
感觉就像括号套娃匹配那样:set (a=((()&)b)&c)
但是改成
set "a="""""&"b&c"
set "a=""""&"b&c"
感觉像计算了双引号的数量,然后配对的双引号




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2