【问题标题】:Need to open file through VB.net on another directory需要通过VB.net在另一个目录打开文件
【发布时间】:2016-02-07 08:47:45
【问题描述】:

通过我的表单,我打开了一个位于 debug 文件夹中的 .exe:

\bin\Debug\文件夹\.exe

.exe 打开并创建 3 个不同的文件,然后关闭。它的目的是在与 .exe 相同的文件夹中创建它们,而是在使用 Process.Start() 通过 VB.net 打开时在 Debug 文件夹中创建它们。

有没有人可以解决这个问题,这样我就不必移动文件了?

编辑 (.exe 本身创建文件,有些东西可能在这个子之外声明)

Private Sub btnRunExe_Click(sender As Object, e As EventArgs) Handles btnRunExe.Click
    If AcptEULA.Checked = True Then
        Localpath = Application.StartupPath() + "\MCserver" + "\minecraft_server." + txtVersion.Text + ".exe"
        Downloadpath = "https://s3.amazonaws.com/Minecraft.Download/versions/" + txtVersion.Text + "/minecraft_server." + txtVersion.Text + ".exe"
        LocalpathParent = Application.StartupPath() + "\MCserver"

        Try
            Dim dirs As String() = Directory.GetFiles(LocalpathParent, "minecraft_server*.exe")
            Dim dir As String
            For Each dir In dirs
                Process.Start(dir)
            Next
        Catch
            'Console.WriteLine("The process failed: {0}", e.ToString())
        End Try

    ElseIf AcptEULA.Checked = False Then
        MsgBox("You must accept the Minecraft EULA before continuing")
    End If

End Sub

【问题讨论】:

  • 1. 不要硬编码路径。 2. 向我们展示您的代码!
  • BIN\DEBUG 文件夹是您的程序在调试时运行的默认文件夹。这对 Visual Studio 会话之外的程序的实际执行没有影响。请显示打开exe的代码。
  • @Steve :在我看来问题在于他对路径进行了硬编码。
  • @VisualVincent 只有代码知道!

标签: vb.net exe


【解决方案1】:

Process.Start 可以与 ProcessStartInfo 实例一起使用,您可以在其中设置 WorkingDirectory 属性。

Dim psi As ProcessStartInfo = New ProcessStartInfo()
psi.WorkingDirectory = LocalpathParent
For Each fileName In Directory.EnumerateFiles(LocalpathParent, "minecraft_server*.exe")
    psi.FileName = fileName
    Process.Start(psi)
Next

请注意,我已将 Directory.GetFiles 更改为 Directory.EnumerateFiles,它允许您在循环遍历文件夹文件时处理文件,而无需将所有文件名加载到数组内的内存中。如果您仍然想使用 GetFiles,那么它是

Dim psi As ProcessStartInfo = New ProcessStartInfo()
psi.WorkingDirectory = LocalpathParent
Dim files as String() = Directory.GetFiles(LocalpathParent, "minecraft_server*.exe")
For Each fileName In files
    psi.FileName = fileName
    Process.Start(psi)
Next

如果您查看 MSDN 上的 ProcessStartInfo documentation,您会发现许多其他有用的属性来微调您的程序的执行方式。

【讨论】:

  • dirs 没有在第五行声明?
猜你喜欢
  • 1970-01-01
  • 2013-06-11
  • 1970-01-01
  • 2020-04-30
  • 2020-04-17
  • 2020-09-02
  • 1970-01-01
  • 2014-05-06
  • 1970-01-01
相关资源
最近更新 更多