2014-01-13 4 views
0

Это то, что я пробовал:Удалить каталог и все подкаталоги

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 

Так что я не получаю сообщение об ошибке при удалении, но она не удаляет что-нибудь.

Почему?

+0

Что происходит, когда вы называете эти команды по directl? – fuz

+0

Если я нахожу rd/s/q c: \\ build в командной строке, он работает. – Kobe

+0

Вы пытались использовать exe.Command («cmd», «/ S», «/ Q», «RS», «C: \\ build»). Я не использую Windows, поэтому я не могу проверить это. – fuz

ответ

0

Попробуйте это ..

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) 
    } 

} 
+0

Спасибо, что сделал трюк. – Kobe

Смежные вопросы