2015-07-03 76 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); 
     } 

這是我結束了最終產品的代碼:)它工作的很棒!希望它可以幫助其他需要它的人。