2011-07-14 50 views
0

它正在尝试推出这个代码通常会从一个批处理文件运行CMD和批次帮助vb.net

批处理文件代码:

@ECHO OFF 
SET BINDIR=%~dp0 
CD /D "%BINDIR%" 
"%ProgramFiles%\Java\jre6\bin\java.exe" -Xincgc -Xmx1G -jar craftbukkit-0.0.1-SNAPSHOT.jar 
PAUSE 

Vb.net代码:

If cmbserverapplication.Text = "Bukkit Server" Then 
      If System.IO.File.Exists(root + "\craftbukkit-0.0.1-SNAPSHOT.jar") = True Then 
       If Environment.Is64BitOperatingSystem = True Then 
        bit = "64" 
       Else 
        bit = "32" 
       End If 
       serverpath = "craftbukkit-0.0.1-SNAPSHOT.jar" 
       Dim javapath As String 
       If bit = 64 Then 
        If System.IO.File.Exists("C:\Program Files (x86)\Java\jre7\bin\java.exe") = True Then 
         javapath = "path = C:\Program Files (x86)\Java\jre7\bin\java" 
        Else 
         javapath = "path = C:\Program Files (x86)\Java\jre6\bin\java" 
        End If 
       Else 
        If System.IO.File.Exists("C:\Program Files\Java\jre7\bin\java.exe") = True Then 
         javapath = "path = C:\Program Files\Java\jre7\bin\java" 
        Else 
         javapath = "path = C:\Program Files\Java\jre6\bin\java" 
        End If 
       End If 
       Dim pi As New ProcessStartInfo("Cmd.exe") 
       pi.Arguments = "@ECHO OFF" 
       pi.Arguments = "SET BINDIR=%~dp" 
       pi.Arguments = "CD /D ""%BINDIR%""" 
       pi.Arguments = """" + javapath + ".exe" + """" + " -Xincgc -Xmx1G -jar craftbukkit-0.0.1-SNAPSHOT.jar" 
       pi.Arguments = "Pause" 

       Process.Start(pi) 

       Me.Close() 

      Else 
       MsgBox("The server file does not exist. Please make sure that you have select the right file type and that it has not been renamed.") 
      End If 

     End If 
    End If 

当我运行代码cmd.exe打开但没有任何反应

+0

这将是更明智的批处理文件使用文本编辑器,保存它,那么就使用'Process'类启动批处理文件,或者如果你想在你的项目中创建一个文本文件,将其嵌入为资源,然后在需要时将其解压缩到临时目录并运行。然后你可以在完成后删除它 – Icemanind

回答

1

三个问题:

  1. 你的java路径与术语 “路径=” 开头,迷惑的命令行。删除这个。

  2. 命令行只能运行一个命令。通过反复设置pi.Arguments,您每次都会替换该命令。唯一执行的命令是PAUSE

  3. 您的CMD命令行完全没有了。它应该是这个样子:

    Cmd.exe /c BatchFile.bat 
    

如果你真的想运行多个命令,你可以在每行之间使用&&

试试这个。根据需要更改WorkingDirectory。我特意在SET BINDIR命令上留下了空间,以防止路径中出现额外的空间。在其他方面,我把它留在那里以便阅读。

Dim pi As New ProcessStartInfo("Cmd.exe") 
pi.WorkingDirectory = "C:\Location of Batch file" 
pi.Arguments = "/c " & _ 
    "@ECHO OFF && " & _ 
    "SET BINDIR=%CD%&& " & _ 
    """" & JavaPath & """ -Xincgc -Xmx1G -jar craftbukkit-0.0.1-SNAPSHOT.jar && " & _ 
    "PAUSE" 
Process.Start(pi)