Dom Vbscript Wscript.Run方法因空格字符而被卡住

Dom Vbscript Wscript.Run方法因空格字符而被卡住,dom,vbscript,hta,Dom,Vbscript,Hta,错误系统找不到指定的文件 strCline = Document.getElementById("head").innerHtml msgbox strCline strCline = replace(strCline, " ",Chr(32)) oShell.run strCline Set oShell = Nothing 上面的代码产生错误,因为它无法正确读取文件名。这都是因为文件名中的空格字符。在阅读之后,我发现chr(32)将替换空格字符,但它不会。我如何使它成为一个空格字符 编辑:

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

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 Settings\eh\tmp.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 Settings\eh\tmp.txt" => -2147024894
""C:\Documents and Settings\eh\tmp.txt"" => 0
只打开一个记事本


有关某些上下文,请参阅。

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

Option Explicit

Dim sFSpec : sFSpec = "C:\Documents and Settings\eh\tmp.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 Settings\eh\tmp.txt" => -2147024894
""C:\Documents and Settings\eh\tmp.txt"" => 0
只打开一个记事本


有关上下文,请参阅。

您必须对包含空格的文件规格进行双引号引用。发布strCline的(典型的)内容。我没有理解你。你的建议是1。“斯特林”2。strCline=替换(strCline,“,”)还是另一个?strCline可能有“第一个文本”或“第二个文本文件”之类的值。我不明白为什么在执行oShell.Run get时会删除空格。您必须对包含空格的文件规范进行双引号引用。发布strCline的(典型的)内容。我没有理解你。你的建议是1。“斯特林”2。strCline=替换(strCline,“,”)还是另一个?strCline可能有“第一个文本”或“第二个文本文件”之类的值。我不知道为什么在oShell.Run-get执行时删除空格。