В моем коде ниже я настроил ReadString
, который читает пользовательский ввод и передает его в exec.Command
.
Это работает просто отлично, но когда я пытаюсь сравнить строку с жестко запрограммированной строкой в vbscript (в этом случае я сравниваю ее с "привет"), она всегда завершается ошибкой, даже если пользовательский ввод "привет""также.
Если я просто запустлю vbscript через командную строку, как это, однако ...
cscript.exe script.vbs hello
... тогда StrComp
будет работать так, как задумано, поэтому я подозреваю, чтоЭто либо проблема типа данных, либо в приложении golang есть какой-то дополнительный символ.
Вот main.go :
package main
import (
"fmt"
"os/exec"
"bufio"
"os"
)
func main() {
buf := bufio.NewReader(os.Stdin)
fmt.Print("Type something: ")
text, err := buf.ReadString('\n')
if err != nil {
fmt.Println(err)
} else {
args := []string{"./script.vbs", string(text)}
exec.Command("cscript.exe", args...).Run()
}
}
А вот script.vbs
MsgBox(WScript.Arguments(0))
If StrComp(WScript.Arguments(0), "hello") = 0 Then
MsgBox("it's the same")
Else
MsgBox("It's not the same...")
End If