在接近疯狂的一天之后,我发现为什么我的脚本无法处理客户提供的数据,这是我的命令中用双引号和单引号括起来的“编码”这个词,它阻止了 Wscript。来自打开 powershell 的 shell(命令在其中按预期工作)。德语的特点是通过添加“n”来附加“Marke”和“Code”等词,因此“Markencode”允许很多包含“encode”的词。:/
我创建了一些最小的 vba 示例来显示该问题。有谁知道解决方法?
Option Explicit
Const HK = """"
Sub ScanDrive()
Dim s As String, command As String
Dim oExec As Object
command = "echo 'encode'"
Debug.Print (command)
Set oExec = CreateObject("Wscript.Shell").Exec("powershell.exe -command " & HK & command & HK)
Do While oExec.Status = 0
Application.Wait (Now + TimeValue("0:00:01"))
Loop
Debug.Print (oExec.ExitCode)
s = oExec.StdOut.ReadAll
Debug.Print (s)
End Sub
输出为(Excel 中的 VBA 版本 7.1.1108):
echo 'encode'
-536870873
不幸的是,我找不到该退出代码的任何内容。顺便说一句...放入“解码”而不是“编码”效果很好。