Board logo

标题: [日期时间] [已解决]cmd /c 中curl请求怎么避免空格问题 [打印本页]

作者: 522235677    时间: 2022-4-25 09:33     标题: [已解决]cmd /c 中curl请求怎么避免空格问题

本帖最后由 522235677 于 2022-4-25 21:00 编辑
  1. cmd /c curl https://text.cn/notice.php?failed^&time=%date%%time%
复制代码
像把系统当前时间当参数传入,但是%date%%time%中包含空格,导致参数内容被截断。加了双引号也会报错,求支招。这个命令是放在计划任务中执行的
  1. cmd /c curl https://text.cn/notice.php?failed^&time=%date:~0,4%/%date:~5,2%/%date:~8,2%%time:~0,2%:%time:~3,2%:%time:~6,2%
复制代码
这样的话curl又报错
curl: (3) URL using bad/illegal format or missing URL
作者: 523066680    时间: 2022-4-25 10:50

本帖最后由 523066680 于 2022-4-25 10:52 编辑

先 uri escape

比如
2022/04/25 10:50:34.33
改为
2022%2F04%2F25%2010%3A50%3A34%2E33
作者: yakeyun    时间: 2022-4-25 10:55

回复 1# 522235677


不知道有用没:
  1. @echo off&setlocal enabledelayedexpansion
  2. set today=%date:~0,4%-%date:~5,2%-%date:~8,2%
  3. set tome=%time:~0,2%:%time:~3,2%:%time:~6,2%
  4. echo %tome% |cmd /c curl https://text.cn/notice.php?failed^&time=%!today!%%!tome!%
  5. pause>nul
复制代码

作者: 522235677    时间: 2022-4-25 12:14

回复 3# yakeyun


    感谢大佬回复,但是我这个没用bat文件,怎么只在命令行处理这个问题?
作者: 522235677    时间: 2022-4-25 12:15

回复 2# 523066680


    感谢大佬回复,escape这个在我这问题上咋用,没用过
作者: yakeyun    时间: 2022-4-25 12:56

回复 4# 522235677


命令都在一行,试下看看:
  1. cmd /c @echo off&setlocal enabledelayedexpansion & set today=%date:~0,4%-%date:~5,2%-%date:~8,2% & set tome=%time:~0,2%:%time:~3,2%:%time:~6,2% & echo %tome% |curl https://text.cn/notice.php?failed^&time=%!today!%%!tome!% & exit
复制代码

作者: Batcher    时间: 2022-4-25 13:12

回复 1# 522235677


新建一个任务计划,观察截取到的日期时间格式跟你预想的是否一样?
  1. echo %date:~0,4%/%date:~5,2%/%date:~8,2%%time:~0,2%:%time:~3,2%:%time:~6,2%>"D:\1.log"
复制代码

作者: idwma    时间: 2022-4-25 14:37

本帖最后由 idwma 于 2022-4-25 14:58 编辑

试试/s参数,似乎里面的特殊字符也不用转义了
  1. cmd /s /c ""curl" "https://text.cn/notice.php?failed&time=%date%%time%""
复制代码

作者: 522235677    时间: 2022-4-25 20:27

回复 8# idwma


    不行哦大佬,这个系统会任务我又在执行time这个命令
作者: 522235677    时间: 2022-4-25 20:30

回复 6# yakeyun


    不行哦大佬,后端接收到的time参数的值是 %!today!%%!tome!%
作者: 522235677    时间: 2022-4-25 20:43

回复 7# Batcher


    是正常的时间
感谢大佬们热心的帮助,问题已解决。
最终方法
  1. /c curl "https://text.cn/notice.php?failed&time=%date:~0,4%/%date:~5,2%/%date:~8,2%%time:~0,2%:%time:~3,2%:%time:~6,2%"
复制代码





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