批处理文件-需要帮助通过C#在cmd中启动命令

本文关键字:cmd 启动 命令 帮助 批处理文件 | 更新日期: 2023-09-27 18:01:01

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

这是.bat命令行

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>

批处理文件-需要帮助通过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);
        }

这是我最终为最终产品编写的代码:(它工作得很好!希望它能帮助其他需要它的人。

cmd.exe不接受这样的参数。

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