将curl命令转为.bat文件在CMD调用时遇错误求助
解决Windows CMD中curl转BAT脚本的执行错误问题
嘿,你这明显是踩了Windows CMD和类Unix shell语法差异的坑啦!原来的curl命令是给bash这类Unix终端写的,直接丢进BAT里执行,会因为引号、换行符的处理规则不一样报错。下面是修正后的BAT脚本,还有我整理的关键修改点:
修正后的BAT脚本
@echo off curl -X POST ^ https://api.telerivet.com/v1/projects/PJ331378e28e30b89f/messages/send ^ -H "Authorization: Basic TFFWcHR6SkxMS0x2a1JwbDBKelBTMExnVHdQbzdybFM=" ^ -H "Cache-Control: no-cache" ^ -H "Content-Type: application/json" ^ -d "{ ^"content^": ^"kjdjefk^", ^"to_number^": ^"+6586524931^" }"
为啥要这么改?给你掰扯清楚:
- 把单引号换成双引号:CMD根本不认单引号
'当字符串包裹符,所有原来的-H 'xxx'必须改成-H "xxx"才行。 - 换对续行符:你原来用的
\是bash的换行续行符,CMD只认^,而且注意^后面绝对不能加空格或者别的字符,不然续行直接失败。 - 转义JSON里的双引号:因为整个
-d参数用双引号包着,里面的双引号得用^转成^",不然CMD会把第一个内部双引号当成字符串结束的标记,直接乱套。 - 删掉Postman-Token:那个是Postman自己生成的临时令牌,实际请求完全不需要,留着反而多余,删掉更清爽(当然硬要留也不会报错)。
嫌换行麻烦?直接写单行也行:
如果不想搞续行,直接写成单行更不容易出错,效果是一样的:
curl -X POST https://api.telerivet.com/v1/projects/PJ331378e28e30b89f/messages/send -H "Authorization: Basic TFFWcHR6SkxMS0x2a1JwbDBKelBTMExnVHdQbzdybFM=" -H "Cache-Control: no-cache" -H "Content-Type: application/json" -d "{ \"content\": \"kjdjefk\", \"to_number\": \"+6586524931\" }"
这里用\"转义双引号也可以,CMD和curl都能识别这种写法。
最后给你个测试小建议:
先在CMD里直接跑一遍修正后的curl命令,确认能正常发请求了,再存成BAT文件。要是还报错,检查下:
- 你的Windows系统有没有装curl(Win10/11默认自带,老版本可能得自己装);
- 授权令牌和请求URL有没有写错。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

