我是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.go
code
- 1 回答
- 0 关注
- 124 浏览
添加回答
举报
0/150
提交
取消