当前位置: 首页 > 知识库问答 >
问题:

golang exec.Command 执行cmd命令的问题?

姬熙云
2024-06-26

我感觉栽在这上面好多次了……

示例命令: commandStr

"d:/可能包含空格/magick.exe" "E:/可能包含空格/0.psd[0]" -strip -resize "2048x2048>" "C:\...\Temp\2118f16acd3ea04b22c30b7369fd5169.avif" && identify -format "%[fx:w] %[fx:h]" "E:/可能包含空格/0.psd[0]"

在cmd中执行:
输出:

1000 485

可以证明上面的命令是正确的。

在 go:

cmd := exec.Command("cmd.exe", "/c", commandStr)output, err := cmd.CombinedOutput()if err != nil {  fmt.Printf("Error: %v\n", err)  fmt.Printf("Output: %s\n", string(output))  return}

报错1: `Output: '\"d:/可能包含空格/magick.exe\"' �����ڲ����ⲿ���Ҳ���ǿ����еij���
���������ļ���`

乱码我无能为力,但看输出,貌似是转义,这莫名其妙,但我先去掉magick.exe的引号

报错2:

Error: exit status 1Output: magick.exe: unable to open image '"E:/可能包含空格': Invalid argument @ error/blob.c/OpenBlob/3596.magick.exe: no decode delegate for this image format `' @ error/constitute.c/ReadImage/746.

问题很简单,路径有空格,并且引号被无视了,为啥?

有明白的大佬吗?
谢谢

共有1个答案

曾明诚
2024-06-26
 prg := "d:/可能包含空格/magick.exe" arg1 := "E:/可能包含空格/0.psd[0]" arg2 := "-strip -resize "2048x2048>"  arg3 := "C:\...\Temp\2118f16acd3ea04b22c30b7369fd5169.avif" cmd := exec.Command(prg, arg1, arg2,arg3)

上面这样不行吗? 没有window环境验证

 类似资料:
  • 问题内容: 我想使用golang和exec库转到某个路径“ c:\”并运行.exe文件。 当我运行go代码时,它会给我: exec:“ cd:/”:文件不存在 问题答案: 该命令是shell的内置命令,无论是bash,cmd.exe,PowerShell还是其他。您将不执行命令,然后执行要运行的程序。相反,你要设置的你要运行到包含程序的目录: 有关更多信息,请参见Cmd文档。或者,您可以在运行程序

  • 本文向大家介绍PHP中执行cmd命令的方法,包括了PHP中执行cmd命令的方法的使用技巧和注意事项,需要的朋友参考一下 本文介绍下,在php代码中执行cmd命令的方法,介绍下在php.ini文件中配置safe_mode参数支持命令执行的方法,有需要的朋友参考下。 说明: 本节内容在wamp包安装的环境实现。 首先,打开php.ini,关掉安全模式safe_mode = off,然后在看看 禁用函数

  • 假设一个docker容器用'docker run'运行,然后用'docker stop'停止。“docker start”之后会执行“cmd”命令吗?

  • 本文向大家介绍java执行windows下cmd命令的方法,包括了java执行windows下cmd命令的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java执行windows下cmd命令的方法。分享给大家供大家参考。 具体实现代码如下: 例如: cmd /c dir 是执行完dir命令后关闭命令窗口。 cmd /k dir 是执行完dir命令后不关闭命令窗口。 cmd /c st

  • 问题内容: 我正在尝试通过Java执行命令行参数。例如: 上面的命令打开命令行,但是不执行或。有任何想法吗?我正在运行Windows XP,JRE6。 (我已经对问题进行了更详细的修订。以下答案很有用,但不能回答我的问题。) 问题答案: 你发布的代码使用自己的命令启动三个不同的过程。要打开命令提示符然后运行命令,请尝试以下操作(请勿自己尝试):

  • 问题内容: 这是一个通过 shell-form指令运行多个命令的愚蠢示例。我更喜欢使用 exec-form ,但是我不知道如何连接指令。 壳形式: 执行表格: 有人可以提供 exec-form 的等效语法吗? 问题答案: 简短的答案是,您不能将 exec形式的 命令链接在一起。 是Shell的功能,用于将命令链接在一起。实际上,当您在Dockerfile中使用此语法时,实际上是在利用Shell功能