go语言 cmd执行命令,遇到空格或者双引号无法执行成功的解决方案
2024-10-12 10:55:06
大部分go执行cmd命令都是,我也是这样写的
package main import (
"fmt"
"os/exec"
) func main() {
cmdExec := `cmd /c "D:\test test\AnyDesk.exe"`
cmd := exec.Command("cmd", "/C", cmdExec)
out, err := cmd.Output()
cmd.Run()
if err != nil {
fmt.Println(err)
return
}
cmd.Wait()
fmt.Println(string(out))
}
但是在使用过程中,偶然间发现上面所有的带引号和空格的路径,就出现了问题,提示路径找不到。后面经过一番的查找与测试,找到了使用如下方法去解决所面临的问题。
package main import (
"fmt"
"os/exec"
"syscall"
) func main() {
cmd := exec.Command("cmd.exe")
cmdExec := `cmd /c "D:\test test\AnyDesk.exe"`
fmt.Println(fmt.Sprintf(`/c %s`, cmdExec))
//核心点,直接修改执行命令方式
cmd.SysProcAttr = &syscall.SysProcAttr{CmdLine: fmt.Sprintf(`/c %s`, cmdExec), HideWindow: true}
output, err := cmd.Output()
fmt.Printf("output:\n%s\n", output)
if err != nil {
fmt.Printf("error: %+v\n", err)
}
}
修改成这样,去测试,发现空格和引号问题已经不存在。
参考地址:go语言 cmd执行命令,遇到空格或者双引号无法执行成功的解决方案 - 知乎 (zhihu.com)
最新文章
- java中值传递和引用传递
- reduce方法
- ActiveMQ学习(三)——MQ的通讯模式
- zz 如何在Linux下创建与解压zip, tar, tar.gz和tar.bz2文件
- fluent nhibernate 初体验
- poj 3264 Balanced Lineup (RMQ算法 模板题)
- PHP.3-DIV+CSS标准网页布局准备工作(上)
- (六)Angularjs - 启动引导
- C# 读取EXCEL数据
- AsyncResult
- android操作ini工具类
- [sklearn]官方例程-Imputing missing values before building an estimator 随机填充缺失值
- vs代码模板制作
- 设计模式学习心得<;装饰器模式 Decorator>;
- Linux补充
- 【Spring】——声明式事务配置详解
- 【Py-Github】根据条件筛选Github repo的例子
- zabbix 添加被监控主机
- camera理论基础和工作原理(转)
- VC.【转】窗口置于前台并激活的方法