Batch file 无法在.bat文件的curl命令中正确转义双引号
我使用以下curl命令将文件上载到云APIBatch file 无法在.bat文件的curl命令中正确转义双引号,batch-file,curl,Batch File,Curl,我使用以下curl命令将文件上载到云API curl -k -w %{http_code} -H "Content-Type:text/plain" --data-binary @\\path\to\file.txt https://api.somesite.com/endpoint 如果我直接将这个curl命令输入cmd控制台,它就可以正常工作。我需要让它在批处理文件中工作,但当我将命令按原样放入批处理文件时,它无法解析命令(未指定URL)。这似乎是因为“内容类型:text/plain”周围
curl -k -w %{http_code} -H "Content-Type:text/plain" --data-binary @\\path\to\file.txt https://api.somesite.com/endpoint
如果我直接将这个curl命令输入cmd控制台,它就可以正常工作。我需要让它在批处理文件中工作,但当我将命令按原样放入批处理文件时,它无法解析命令(未指定URL)。这似乎是因为“内容类型:text/plain”周围有双引号。命令中包含这一点对于api能够处理我的文件至关重要
根据我的回答,我尝试了几种不同的方法来避开双引号。这些都是各种方法的结果
^"Content-Type:text/plain^"
这不会上载文件,curl错误:未指定URL
\"Content-Type:text/plain\"
这将上载文件,curl报告成功,但api无法将文件识别为纯文本
""Content-Type:text/plain""
\""Content-Type:text/plain\""
这将上载文件,curl报告成功,但api无法将文件识别为纯文本
""Content-Type:text/plain""
\""Content-Type:text/plain\""
这不会上载文件,curl错误:未指定URL
\"Content-Type:text/plain\"
因此,我发现了许多失败的方法,但没有一种组合能够同时适用于批处理、curl和api。有没有其他逃跑的方法,我可以试试,或者有没有其他的建议 你的问题不是引号,而是百分号 在批处理文件中,百分比符号不是值检索操作的一部分,但需要通过加倍来转义文本 试一试
curl -k -w %%{http_code} -H "Content-Type:text/plain" --data-binary @\\path\to\file.txt https://api.somesite.com/endpoint
cmd
解析器将单个%
视为变量值请求的开始,百分比符号后的文本视为变量名称
curl -k -w %{http_code} -H "Content-Type:text/plain" ....
^............................^
this is a failed variable retrieval operation
这在命令行和批处理文件中都会发生,但在这两种情况下,未声明变量的默认行为是不同的。在命令行中,如果我们请求一个变量,但它不存在,那么解析器会保留变量名,但在批处理文件中,解析器会用一个空字符串替换变量请求。IMO问题出在别处,您必须将
%%
加倍,我会加倍引用几乎所有的参数curl-k-w%%{http\u code}-H“内容类型:text/plain”--数据二进制“@\\path\to\file.txt”https://api.somesite.com/endpoint“