pycurlcmd: 将 linux 的多行 Curl 命令转换为 Windows 格式并直接执行

简介

curl做为各种网络API的调试工具非常方便,技术网站上大多提供了多行 curl 命令,可直接在 LinuxMacOS 系统上执行。但由于Windows的多行命令格式的特点,把它们转换为 Windows 格式有点烦琐。

pycurlcmd 是一款用户友好的工具,旨在简化将多行 Linux curl 命令转换为 Windows 格式的过程。通过自动完成必要的语法更改,它消除了手动调整的麻烦,并可直接在Windows上执行 curl 命令,方便顺手。

经过多次验证正确的引号内多行字符串处理方式
cmd 确实不擅长处理带引号的多行字符串,尤其是在命令参数中。你不能在打开引号后直接使用 ^ 来续接换行符或实现多行字符串。
关键限制: cmd 并不直接支持在引号内的换行符。在引号内,它会字面量地显示换行符(不会当作分隔符),但你无法在不结束引号的情况下直接输入换行符。
在 curl 命令中正确使用引号和多行 JSON 的方法 (复习和修正)
根据前面的讨论,在 curl 命令中,你不能使用 ^ 在引号内续接多行 JSON 字符串,正确的做法是:
将 JSON 压缩为一行 (但可读性差):

主要功能

  • 无缝转换: 自动将 Linux curl 命令转换为其对应的 Windows 格式。
  • 直观界面: 提供简单易用的图形用户界面 (GUI)。

如何使用

  1. 启动应用程序: 确保在您的 Windows 机器上安装了python,使用 python pycurlcmd.py 启动。
  2. 粘贴您的命令: 先将 Linux curl 命令复制到粘贴板,点击粘贴并转换按钮即可将curl将命令转换并粘贴到输入框中。这时可在修改参数或各种key。
  3. 运行命令: 点击运行命令直接执行转换后的命令。如果curl命令不在路径中,也可在这一步指定curl的位置。

pycurlcmd interface

命令行示例

  • Linux: Bash
  • Windows (已转换): DOS

关键转换更改

  • 换行符: Linux 使用反斜杠 (\) 表示续行,而 Windows 使用脱字符 (^)。
  • 引号: Windows命令行中不能使用单引号,而JSON串中也不能使用单引号。
  • 编码: 确保非 ASCII 字符的编码正确。

故障排除

  • 输出不正确: 检查原始 Linux 命令是否存在语法错误。
  • 编码问题: 确保您的终端或代码编辑器使用正确的编码。
  • 命令执行错误: 请参阅 curl 文档以获取特定错误消息。

贡献

我们欢迎您为改进 pycurlcmd 做出贡献。欢迎在我们的 GitHub 仓库上提交问题或拉取请求:[GitHub 仓库链接]

许可证

[指定代码发布许可证,例如 MIT、Apache]

通过遵循这些指南,您可以创建既信息丰富又对所有级别用户都友好的 README。

注意事项

  • 依赖项: 使用了tkinter库。确保tcl/tk安装正确

Windows上增加路径

仔细想一下这个操作应该算是简单,要加入时基本都是在命令行下,直接使用 set 或 path 命令都可以。

可为啥总是很抗拒呢?应该是最终要输入 %PATH% 这个变量,大写不好输入吧。

正好学习rust,就想写个小程序试一下。发动所有的AI开始写,结果并不是很成功。

path这个环境变量在windows上有两个地方:一个是全局的,一个是用户的。使用程序可以分别指定修改这两个环境变量。AI也确实做到了。但环境变量改了,当前打开的窗口中并没有改变。程序运行中止后,环境又恢复了。AI提议说发个广播消息,通知所有打开的窗口环境变量改变了。但好像并没啥子用。

那换成批处理吧,肯定是可行的。这么简单的功能直接写个cmd文件如下:

结果,这个代码跑不了,报错:此时不应有 \Windows。

费劲调试了半天,干脆还是问AI吧,一般的AI还搞不定。最后还是gemini 2.0给了以下的解决方案:

看着好像差不多,但真的能用。还给了解释如下:

修改说明

  1. "%~1":
    • %~1 会移除第一个参数的周围的引号, 这样可以兼容带引号和不带引号的参数,并且能避免空格带来的问题。
    • "%~1" 使用双引号包裹参数,可以确保正确处理包含空格的路径。
  2. set "new_path=%PATH%;%~1":
    • 使用 set "variable=value" 形式设置变量, 确保正确处理包含空格和特殊字符的路径。
    • 先创建一个临时变量 new_path, 将当前 path 和 参数进行拼接。
  3. setx PATH "%new_path%":
    • setx 命令是用来永久设置环境变量的命令, 可以将变量写入到注册表中。
    • 将更新后的路径设置到 PATH 环境变量。 注意, 需要使用双引号来包裹路径。

改进后的脚本优点

正确处理空格和特殊字符: 使用 “%~1” 和 set “variable=value” 可以正确处理路径中的空格和特殊字符

永久设置环境变量: 使用 setx 命令可以永久设置环境变量,使得修改在新的 cmd 窗口中也生效。

避免临时的环境变量影响: 先将环境变量拼接好, 然后再一起设置,可以避免临时的环境变量影响。

测试使用Vivaldi

从最早的Opera过来,最后看到的结局是全被Chromune统一了,最有些不舍。这个说是新的,还是没有跳出chrome的圈子。

第一印象是:颜色很混乱