【问题标题】:Save and open vbs script programmatically以编程方式保存和打开 vbs 脚本
【发布时间】:2015-02-27 02:30:42
【问题描述】:

我在这个方法上搜索了很多,但没有办法

我希望我的 VB 程序一旦打开它就会使用 vbs 脚本文件向用户提供一些消息 所以一旦打开程序,保存在 temp 中的 vbs 文件并运行以向用户说出消息

我已将此代码与导入资源的 vbs 文件一起使用 但不幸的是它只适用于一行脚本而不是多行脚本

    Dim Variable As String = Environ("temp") & "Message.vbs"
    If Not System.IO.File.Exists(Variable) Then
        System.IO.File.WriteAllBytes(Variable, My.Resources.Message)
    End If
    Process.Start(Variable)

我也使用了第二个代码,但由于保存导致编译出错

    Dim Variable As String = Environ("temp") & "\Message.vbs"
    IO.File.Delete(Variable)
    My.Resources.Access.Save(Variable )
    Shell("explorer" & Variable )

请帮我处理这段代码,我花了很长时间才得到解决方案,但一无所获

提前致谢

【问题讨论】:

  • vb.net 和 vb6 不是一回事。这似乎是 .NET。
  • @jac,我想,他想把vb-script,它有vb6语法,保存到硬盘并启动它。
  • @T.S.:vbscript 有一个特定的标签。 .NET 已经存在(在 vb.net 中),因此单独标记它是没有意义的。该问题询问有关从 vb.net 保存和启动 vbscript 文件。
  • “它只适用于一行脚本”是什么意思?您是说文件中只写入了一行,还是说写入了多行但不正确?
  • @jac 我的意思是像这样简单的一行脚本 x=msgbox("Your Text Here" ,0, "Your Title Here") 但对于更复杂的脚本,执行脚本时会出现错误 i认为原因是代码只取一维——

标签: vb.net vbscript


【解决方案1】:

我对您的第一个示例做了一些小改动,并创建了一个简单的 vbs 文件。第一个更改是因为 VB 脚本文件只是一个文本文件,我将资源添加为文本文件并将 WriteAllBytes 语句更改为 WriteAllText。其次,因为WriteAllText(和WriteAllBytes 也是),如果文件已经存在则覆盖文件,我消除了If 语句。如果您真的不想覆盖文件,您可能仍然需要它。最后,我在文件名的开头添加了一个反斜杠,以便在 temp 文件夹中创建文件。否则你会得到 drive:\temppath\tempMessage.vbs"。这执行了我的简单脚本文件就好了。

.NET 代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim Variable As String = Environ("temp") & "\Message.vbs"

    System.IO.File.WriteAllText(Variable, My.Resources.hello)
    Process.Start(Variable)
End Sub

我的 VBScript 文件:

MsgBox "Hello World", 0,"Messagebox #1"
MsgBox "My name is Fred", 0,"Messagebox #2"
MsgBox "I have to go now", 0,"Messagebox #3"

【讨论】: