为了账号安全,请及时绑定邮箱和手机立即绑定

cmd.Run() 返回“文件不存在”错误

cmd.Run() 返回“文件不存在”错误

Go
BIG阳 2022-08-24 10:48:42
我是Golang的新手,但它的明显优势之一是创建命令行工具,所以我认为一个有趣的小学习练习是在Windows上重新创建“触摸”命令。我编写了一个程序,用于在指定的文件路径或当前文件夹中创建新文件。这已经变得非常盛大,我可以毫无问题地制作一个新文件:func create_empty_file(file_name string) bool {    filehandle, err := os.Create(file_name)    if err != nil {        return false    }    defer filehandle.Close()    return true}我知道这部分正在工作,因为我可以观看正在制作的文件并在程序完成后打开它。我这里的问题是,我想在创建后在VSCode中打开它,显然有一些我不明白的地方。当我尝试运行这个:os/execcommand_string := strings.Join([]string{"code", full_filepath}, " ")run_command := exec.Command(command_string)run_err := run_command.Run()我打印出的内容(显然事先检查),我得到这个:run_errnil.Run() failed with error: exec: "code C:\\Go Code\\failed_successfully.go": file does not exist如果我复制并粘贴到命令提示符中,它会在VSCode中打开文件而不会出现问题,因此很明显,此调用有一些内容是我所缺少/不理解的。"code C:\\Go Code\\failed_successfully.go".go我想也许它在创建之前试图打开文件,所以我查找了如何检查文件是否存在,然后使用s编写了一个简短的函数,该函数每隔几毫秒检查一次文件是否存在,并在找到它时返回。否则,它将运行一些指定的秒数,然后返回 false。我仍然得到相同的错误,所以我假设这不是问题。Ticktrue我做的最后一件事是使用正斜杠替换所有反斜杠,这没有任何效果。strings.Replace()关于如何在这里实现我想要的任何建议将不胜感激!
查看完整描述

1 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

exec.Command不解析输入字符串,将其拆分为空格等。相反,请将参数分别传递给 。exec.Command

那是:

runCmd := exec.Command("code", full_filepath)

目前,您正在尝试查找一个名为的命令 -- 而不是简单地调用并使用参数调用它。code C:\\Go Code\\failed_successfully.gocode


查看完整回答
反对 回复 2022-08-24
  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信