需要通过 VB.net 在另一个目录上打开文件
Need to open file through VB.net on another directory
通过我的表单,我打开了一个位于调试文件夹中的 .exe:
\bin\Debug\folder\.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
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,您会发现许多其他有用的属性来微调程序的执行方式。
通过我的表单,我打开了一个位于调试文件夹中的 .exe:
\bin\Debug\folder\.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
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,您会发现许多其他有用的属性来微调程序的执行方式。