我正在尝试从 .NET 执行 cmd 命令并将 find cmd 命令用作管道。但是 find cmd 命令采用字符串中的值,但是当我创建字符串变量而不是使用双引号时,它会将其替换为 /""。
我的字符串变量是 "/c sc QUERY ServiceName | find \"START\"" 而不是将 "/c sc QUERY ServiceName | find "START"" 这个传递给 cmd shell,而是传递 "/c sc QUERY ServiceName | find \ "START\"" 我的 find 命令失败了。
下面是我的 .NET 代码
string cmdstr = "/c sc QUERY ServiceName | find \"START\"";
Process prc = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = cmdstr;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
prc.StartInfo = startInfo;
prc.Start();
string result;
result = prc.StandardOutput.ReadToEnd();
prc.WaitForExit(10);
当我调试代码时, cmdstr 值不包含双引号,但它包含 \"