猿问

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

我是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/exec


command_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()


关于如何在这里实现我想要的任何建议将不胜感激!


BIG阳
浏览 126回答 1
1回答

湖上湖

exec.Command不解析输入字符串,将其拆分为空格等。相反,请将参数分别传递给 。exec.Command那是:runCmd := exec.Command("code", full_filepath)目前,您正在尝试查找一个名为的命令 -- 而不是简单地调用并使用参数调用它。code C:\\Go Code\\failed_successfully.gocode
随时随地看视频慕课网APP

相关分类

Go
我要回答