【问题标题】:Remove directory and all subdirectories删除目录和所有子目录
【发布时间】:2014-01-14 02:08:14
【问题描述】:

这是我尝试过的:

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    fmt.Println("Removing build directory")
    if err := exec.Command("cmd", "/S /Q", "RD", "c:\\build").Run(); err != nil {
        fmt.Printf("Error removing build directory: %s\n", err)
    }

    if err := exec.Command("cmd", "/C", "mkdir", "c:\\build").Run(); err != nil {
        fmt.Printf("Error making new build directory: %s\n", err)
    }
}

我的输出是:

Removing build directory
Error making new build directory: exit status 1

所以我在删除时没有收到任何错误,但它不会删除任何内容。

这是为什么呢?

【问题讨论】:

  • 直接调用这些命令会发生什么?
  • 如果我在命令提示符下输入 rd /s /q c:\\build ,它可以工作。
  • 你试过使用 exe.Command("cmd", "/S", "/Q", "RS", "C:\\build").Run 吗?我不使用 Windows,所以我无法测试任何这些。
  • 使用golang.org/pkg/os/exec/#Cmd.CombinedOutput 而不是运行。这样您就可以从您的子进程中显示标准输出/标准错误。希望它会在那里打印出好的错误消息。
  • @alex: 好的,谢谢你的建议

标签: go


【解决方案1】:

试试这个..

func main() {
    fmt.Println("Removing build directory")

   c := exec.Command("cmd", "/C", "rd /S /Q", "C:\\build")

    if err := c.Run(); err != nil { 
        fmt.Println("Error: ", err)
    }  


    if err := exec.Command("cmd", "/C", "mkdir", "c:\\build").Run(); err != nil {
        fmt.Printf("Error making new build directory: %s\n", err)
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多