2015-07-03 42 views
0

我有一个启动命令的.bat文件,我想废除使用.bat文件并以编程方式在C#中启动进程。在cmd中需要帮助启动命令通过C#

这里是蝙蝠命令行

start ShooterGameServer.exe TheIsland?QueryPort=27015?SessionName=ARKServer?MaxPlayers=5?listen?ServerPassword=55555?ServerAdminPassword=55555 -nosteamclient -game -server -log 

我已尝试设置它像在C#

Process.Start("CMD.exe", string.Format("Start {0} TheIsland?QueryPort=27015?SessionName?{1}?MaxPlayers={3}?listen?ServerPassword={2}?ServerAdminPassword={2} -nosteamclient -game -server -log", ArkServer.FileName, textBox1.Text, textBox2.Text, numericUpDown1.Value.ToString())); 

所有我结束了在C#中运行命令后是一个cmd窗口这个印有

C:\Users\*******\Documents\Visual Studio 2013\Projects\ArkProfileEditor\ArkProfi 
leEditor\bin\Debug> 

回答

1

我认为你要做的是启动exe而不是命令窗口。请尝试以下操作

Process.Start("ShooterGameServer.exe", string.Format("TheIsland?QueryPort=27015?SessionName?{1}?MaxPlayers={3}?listen?ServerPassword={2}?ServerAdminPassword={2} -nosteamclient -game -server -log", ArkServer.FileName, textBox1.Text, textBox2.Text, numericUpDown1.Value.ToString())); 

确保ShooterGameServer.exe与exe启动它或传递适当的路径在同一目录中。

0

cmd.exe不采取这样的论点。

您想运行cmd /c ...来告诉cmd运行该命令。

1
  SaveFileDialog saveserver = new SaveFileDialog(); 
     saveserver.FileName = "ARKServerStart.bat"; 
     saveserver.Filter = "ARKServerStart (*.bat)|*.bat"; 
     saveserver.InitialDirectory = ArkServer.FileName; 
     if (saveserver.ShowDialog() == DialogResult.OK) 
     { 
      StreamWriter SW = new StreamWriter(saveserver.FileName); 
      string runit = string.Format("start ShooterGameServer.exe TheIsland?QueryPort=27015?SessionName={0}?MaxPlayers={3}?listen?ServerPassword={1}?ServerAdminPassword={2} -nosteamclient -game -server -log", ServName.Text, ServPass.Text, AdmnPass.Text, MPlayers.Value.ToString(), ArkProfile.FileName.Replace("ShooterGameServer.exe", "")); 
      SW.WriteLine(runit); 
      SW.Close(); 
      var dir = new ProcessStartInfo(); 
      Path.GetDirectoryName(saveserver.FileName); 
      dir.WorkingDirectory = Path.GetDirectoryName(saveserver.FileName); 
      dir.FileName = saveserver.FileName; 
      dir.CreateNoWindow = true; 
      Process pro = Process.Start(dir); 
      Clipboard.SetText(saveserver.FileName); 
     } 

这是我结束了最终产品的代码:)它工作的很棒!希望它可以帮助其他需要它的人。