You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows CMD中向curl命令传递含空格的字符串变量

解决Windows CMD中向curl传递含空格字符串变量的问题

问题根源

你当前的命令失败是因为在CMD中设置变量时,将双引号包含在了变量值中(比如set projectName="Online Banking REST API OmPf"),导致变量展开后生成的JSON出现嵌套双引号("projectName": ""Online Banking REST API OmPf""),这是无效的JSON格式,从而触发400错误。

正确解决方案

步骤1:正确设置CMD变量

在CMD中,使用带引号的set语法定义含空格的变量,这样变量值不会包含外层的双引号:

set "emailID=xxxx@gmail.com"
set "openAPISpec=http://petstore/v2/swagger.json"
set "licenseKey=ccc0e4-b000-491f-9d7b-7e59f9768"
set "projectName=Online Banking REST API OmPf"
set "MyDefault=dXNlcjFAbmV0YmFua2luZy5pbzphZG1pbjEyMyDefault"
set "MyRoleAdmin=dXNlcjFAbmV0YmFua2luZy5pbzphZG1pbjEyMyRoleAdmin"
set "MyRoleUser=dXNlcjFAbmV0YmFua2luZy5pbzphZG1pbjEyMyRoleUser"

这种写法既可以处理含空格的变量值,又不会将双引号存入变量中。

步骤2:构造正确的curl命令

确保JSON payload格式合法,对JSON中的双引号使用反斜杠转义,直接引用清理后的变量即可:

curl -s --location --request POST "https://dev.ethicalcheck.qtech.ai/api/v1/scan" ^
-H "Content-Type: application/json" ^
-d "{\"openAPISpec\": \"%openAPISpec%\", \"email\": \"%emailID%\", \"licenseKey\": \"%licenseKey%\", \"projectName\": \"%projectName%\", \"headers\": [\"Authorization: Bearer %MyDefault%\", \"Authorization: Bearer %MyRoleAdmin%\", \"Authorization: Bearer %MyRoleUser%\"]}"
  • 使用^作为CMD中的换行符,让命令更易读
  • 所有JSON中的双引号都用\"转义,确保CMD正确解析
  • 变量直接嵌入JSON的字符串值中,生成的JSON格式完全合法

验证逻辑

执行上述命令后,生成的JSON payload中projectName字段会是:

"projectName": "Online Banking REST API OmPf"

这是符合规范的JSON格式,不会触发后端的400错误。

内容的提问来源于stack exchange,提问作者devops-admin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:25:22