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

将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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:06:39