2016-07-28 34 views
0

nicht verwenden Ich habe ein Programm in Golang gemacht und ich versuche, eine Datei als erstes Argument zu verwenden, wenn ich mein Programm starte.Kann Backslash `` in Golang os.Arg Variablen

Zum Beispiel: ./goprogram.exe C:\Acidic\image.png

Wenn mein Programm versucht, den os.Arg [1] Variable zu verwenden, die die Verbindung zum image.png Datei sein sollte, ist es die Zeichenfolge ohne eine der Schrägstriche zurückgibt (C: Säurebild.png).

Wie kann ich die ganze Zeichenfolge eines Arguments verwenden, ohne dass Zeichen maskiert werden?

Ich habe ein kleines Beispiel aus:

package main 

import (
    "fmt" 
    "os" 
) 

func main() { 
    if len(os.Args) >= 2 { 
     fmt.Println(os.Args[1]) 
    } 
} 

ich go run args.go C:\Users\image.png laufen und es gibt C:Usersimage.png

+0

http://i.imgur.com/nTwHekk.png Go1.6x64 Win10x64 –

+0

http://imgur.com/VwHquPW go1.6.3 windows/amd64 – Acidic

Antwort

0

Das Problem scheint Shell zu sein. Versuchen Sie, den Dateipfad zu zitieren:

./goprogram.exe 'C:\Acidic\image.png' # prevents escape sequence execution 

Ein String fo Typ C:\Acidic\image.png (mit Einzel \ ‚s) ist keine gültige Zeichenfolge in Go (ungültige Escape-Sequenz \A, usw.) und würde nicht einmal kompilieren.

+0

Ah ja, das hat funktioniert. Das einzige Problem ist jedoch, dass ich versuche, mein Programm mit Windows "Öffnen mit" zu verwenden, und dass man keine Zitate für das Argument verwendet. – Acidic

+0

Sie können versuchen, das Ziel Ihrer ausführbaren Datei zu ändern. Versuchen Sie, dort Zitate hinzuzufügen. Beachten Sie, dass Sie möglicherweise eine Verknüpfung erstellen müssen, bevor Sie das Ziel der 'exe' ändern können. – abhink

+0

Ich verstehe, wenn das die einzige Option ist:/aber es wäre gut, wenn es eine Möglichkeit gäbe, dies innerhalb des Programms zu lösen. – Acidic

0

Setzen jedes Argument in Anführungszeichen:

./goprogram.exe "C:\Acidic\image.png" 
+0

Ah ja das hat funktioniert. Das einzige Problem ist jedoch, dass ich versuche, mein Programm mit Windows "Öffnen mit" zu verwenden, und dass man keine Zitate für das Argument verwendet. – Acidic