C# 需要通过C在cmd中启动命令的帮助吗#

C# 需要通过C在cmd中启动命令的帮助吗#,c#,batch-file,cmd,C#,Batch File,Cmd,我有一个启动命令的.bat文件,我不想使用.bat文件,而是以编程方式在C#中启动该过程 这是.bat命令行 start ShooterGameServer.exe TheIsland?QueryPort=27015?SessionName=ARKServer?MaxPlayers=5?listen?ServerPassword=55555?ServerAdminPassword=55555 -nosteamclient -game -server -log 我试着在C中这样设置它# 在C#中

我有一个启动命令的.bat文件,我不想使用.bat文件,而是以编程方式在C#中启动该过程

这是.bat命令行

start ShooterGameServer.exe TheIsland?QueryPort=27015?SessionName=ARKServer?MaxPlayers=5?listen?ServerPassword=55555?ServerAdminPassword=55555 -nosteamclient -game -server -log
我试着在C中这样设置它#

在C#中运行该命令后,我得到的结果是一个cmd窗口,上面打印了这个命令

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

cmd.exe
不接受这样的参数


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

我想您想做的是启动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位于同一目录中,或传递适当的路径

            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);
        }
这是我为最终产品编写的代码:)它工作得很好!希望它能帮助其他需要它的人

            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);
        }