如何将字符串插入文字字符串

时间:2018-09-18 12:25:52

标签: c#

我正在尝试制作程序。将找到程序的PID号。 到目前为止,我已经可以使用记事本了。

代码:

 var proc = new Process
        {
            StartInfo = new ProcessStartInfo
            {
                FileName = "cmd.exe",
                Arguments = "/C for /f \"tokens=1,2\" %a in " + "('Tasklist /fi \"imagename eq notepad.exe\" /nh') do @echo %b",
                RedirectStandardOutput = true,
                UseShellExecute = false,
            }
        };

它不会只是用于测试目的的记事本。 我希望它是站立在那里的字符串,而不是记事本。

喜欢

String myProgram = @"[insert program name]";

 var proc = new Process
        {
            StartInfo = new ProcessStartInfo
            {
                FileName = "cmd.exe",
                Arguments = "/C for /f \"tokens=1,2\" %a in " + "('Tasklist /fi \"imagename eq MyProgram\" /nh') do @echo %b",
                RedirectStandardOutput = true,
                UseShellExecute = false,
            }
        };

我不知道如何将其从文本“记事本”更改为我的字符串。

3 个答案:

答案 0 :(得分:2)

也许可以用吗?

Arguments = string.Format("/C for /f \"tokens=1,2\" %a in " + "('Tasklist /fi \"imagename eq {0}\" /nh') do @echo %b",myProgram ),

答案 1 :(得分:2)

这将为您提供所有正在运行的记事本实例的PID:

foreach (var notepad in Process.GetProcessesByName("notepad"))
{
     Console.WriteLine(notepad.Id);
}

不需要启动批处理处理器并弄弄它的参数。

答案 2 :(得分:1)

最简单的方法是使用字符串。格式简写:

        string myProgram = @"[insert program name]";
        var proc = new Process
        {
            StartInfo = new ProcessStartInfo
            {
                FileName = "cmd.exe",
                Arguments = $"/C for /f \"tokens=1,2\" %a in ('Tasklist /fi \"imagename eq {myProgram}\" /nh') do @echo %b",
                RedirectStandardOutput = true,
                UseShellExecute = false,
            }
        };

编辑:根据Ian的建议,$的{​​{1}}速记运算符仅在C#6中可用。这不适用于早期版本。