Vbscript Wscript.Run方法由于空格字符而被卡住



错误系统找不到指定的文件

strCline = Document.getElementById("head").innerHtml
msgbox strCline
strCline = replace(strCline, " ",Chr(32))
oShell.run strCline
Set oShell = Nothing

上面的代码产生错误,因为它无法正确读取文件名。这都是因为文件名中的空格字符。看完之后,我发现chr(32)会取代空格字符,但不会。我该如何使它具有空格字符。

编辑:
我的最终代码看起来是这样的,它起作用了。我在创建对象时犯了一个错误。

Sub funEdit
set oShell=createobject("Wscript.shell")
strCline = Document.getElementById("head").innerHtml
msgbox strCline
strCline = replace(strCline, " ",Chr(32))
oShell.run strCline
Set oShell = Nothing
End Sub

shell使用空格分隔符将命令行拆分为多个参数。如果要将文本文件规范发送到.Run以在默认编辑器中自动显示它们,则必须对(逻辑上)单个参数进行双引号引用。这个演示代码:

Option Explicit
Dim sFSpec : sFSpec = "C:Documents and Settingsehtmp.txt"
Dim sCmd   : sCmd     = sFSpec
Dim oWSH   : Set oWSH = CreateObject("WScript.Shell")
On Error Resume Next
 oWSH.Run sCmd
 WScript.Echo qq(sCmd), "=>", Err.Number, Err.Description
 Err.Clear
 sCmd = qq(sFSpec)
 oWSH.Run sCmd
 WScript.Echo qq(sCmd), "=>", Err.Number, Err.Description
On Error GoTo 0
Function qq(s)
  qq = """" & s & """"
End Function

将输出:

"C:Documents and Settingsehtmp.txt" => -2147024894
""C:Documents and Settingsehtmp.txt"" => 0

并且只打开一个记事本。

请参阅此处了解一些上下文。

相关内容

  • 没有找到相关文章

最新更新