2012-10-22 15 views
16

Kann mir jemand so freundlich sein, mir zu sagen, wie man einen einfachen DOS-Befehl in Go ausführt?Wie führe ich einen einfachen Windows DOS Befehl in Golang aus?

Beim Laufen etwas wie folgt aus:

exec.Command("del", "c:\\aaa.txt") 

Die Ausgabe lautet:

"del: ausführbare Datei nicht in% path% gefunden"

Wieder dachte ich, diese einfache Aufgabe sein würde, in Geh, aber nach 2 Stunden Suche konnte ich keine Beispiele dafür finden. Kann mir jemand auch sagen, was ich falsch mache, weil ich in Go keine guten Beispiele zu den einfachsten Aufgaben finden kann.

Antwort

29

ich den gleichen Fehler wie Sie. Aber Dystroy ist korrekt: Sie können del oder irgendeinen anderen Befehl nicht laufen lassen, der in cmd eingebaut wird, weil es keine del.exe Datei (oder irgendein anderes del-ausführbares für diese Angelegenheit) gibt.

Ich habe es mit zu arbeiten:

package main 

import(
    "fmt" 
    "os/exec" 
) 

func main(){  
    c := exec.Command("cmd", "/C", "del", "D:\\a.txt") 

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

Well done ANisus ausführen. Danke für die Hilfe! – Yster

+0

Was, wenn ich das auf Mac OS verwenden möchte? so etwas wie 'cmd: = exec.Command (" cmd "," killall opera ")' Funktioniert nicht für mich. –

+0

auf einem Mac etwas wie 'command: = exec.Command (" bash "," -c "," ")' wird funktionieren – ffel

5

Sie benötigen einen Windows-Befehl, um den Befehl dir auszuführen.

Versuchen Sie folgendes:

cmd := exec.Command("cmd", "/C dir").Output() 

(sorry, kein Windows-Computer es jetzt zu prüfen)

+0

Hallo dystroy. Ich habe es versucht und Variationen, aber es scheint nicht zu funktionieren. Es läuft, aber nichts passiert. Zum Beispiel: \t exec.Command ("cmd/c del c: \\ bbb \\ aaa.txt"). Danke für den Versuch. – Yster

+2

Da Sie löschen von C :, stellen Sie sicher, dass Sie Ihr Go-Programm mit Berechtigungen zum Löschen von C: – ANisus

1

zu einem anderen Lösung gefunden. Erstellen Sie eine Batchdatei, die Folgendes enthält: del c: \ aaa.txt

nennen es dann wie folgt aus:

exec.Command("c:\\del.bat").Run()