簡體   English   中英

在 windows 上使用 exec.Command 進行更新

[英]Go use of exec.Command on windows for noverify

我想使用 VKCOM/ noverify來分析代碼。 使用此命令從命令行(windows dos shell)調用它有效

 noverify.exe -exclude-checks arraySyntax,phpdocLint 
              -output result.txt 
              C:\Dev\PHP\ResourceSpace_9_0_13357\include

問題是我無法將參數傳遞給cmnd := exec.Command("noverify.exe", args)

options := " -exclude-checks arraySyntax, PHPDoc"
pathToCode := "C:\\Dev\\PHP\\ResourceSpace_9_0_13357\\include"

// this works
cmnd := exec.Command("noverify.exe", pathToCode)


args := []string{options, pathToCode}
arg := strings.Join(args, "")
// passing options does not work
// cmnd := exec.Command("noverify.exe", arg)    

b, err := cmnd.CombinedOutput()

我試過什么

你可以在這個 gist 中找到我的源代碼盡管上面的分隔符是空的,但 args 似乎被連接為一個由 分隔的字符串。

問題

  1. 如何將多個參數傳遞給exec.Comman("yourFoo.exe", cmdArgs...)
  2. 為什么我的嘗試在 Windows 上不起作用?

有多個選項可以將參數傳遞給 exec.Command:

您可以使用多個字符串作為參數:

cmd := exec.Command("your-command", "arg1", "arg2")

如果你有一個參數切片,你可以使用擴展運算符

args := []string{"-exclude-checks", "arraySyntax,phpdocLint", "-output", "result.txt", "your-path"}
cmd := exec.Command("your-command", args...)

問題二:在你的代碼中

options := " -exclude-checks arraySyntax, PHPDoc"
pathToCode := "C:\\Dev\\PHP\\ResourceSpace_9_0_13357\\include"
    
args := []string{options, pathToCode}

您將兩個選項傳遞給外部程序。 如果你在命令行上寫了同樣的,你就通過了

your-command.exe " -exclude-checks arraySyntax, PHPDoc" "your-path"

這不起作用,這也是您的程序不起作用的原因。

簡而言之,無論您在命令中的任何位置放置空格,都需要為exec.Command提供一個單獨的參數。 示例也執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM