c# - cmd 参数不起作用

标签 c# winforms cmd arguments

我正在尝试从本地安装的 SQL Server 实例中获取所有服务器名称。 我知道在 cmd 中有一个“sqlcmd -L”命令返回这个列表。 以下是我用来运行 cmd 的代码。

Process sqlServers = new Process();
ProcessStartInfo psi = new ProcessStartInfo();
psi.RedirectStandardOutput = true;
psi.CreateNoWindow = false; (DEBUGGING PURPOSES)
psi.FileName = "cmd";
psi.Arguments = @"sqlcmd -L";
psi.UseShellExecute = false;
sqlServers = Process.Start(psi);
string serverList = sqlServers.StandardOutput.ReadToEnd();
sqlServers.WaitForExit(30000);

我在程序的另一部分中使用了这个代码库,它工作正常。虽然我没有读回一个值。

谁能帮我找出为什么当我运行此代码时会打开一个 cmd 窗口,但没有运行任何参数,也没有返回任何内容。

最佳答案

如果您希望通过“cmd.exe”调用命令,您需要指定“/c”参数,因此您的代码应该如下所示:

psi.FileName = "cmd.exe";
psi.Arguments = "/c sqlcmd -L"

尽管我不清楚您为什么通过“cmd.exe”调用它而不是直接使用“sqlcmd”。

关于c# - cmd 参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7314467/

相关文章:

c# - 在扩展方法中渲染部分失败

c# - 如何将图像从图像列表添加到图片框

c# - 给菜单项添加点击事件

windows - 在 Windows 中为 gvpack 合并多个 graphviz DOT 文件

windows - 通过批处理文件将参数(目录名)从 MATLAB 传递到 WinSCP 脚本

java - 命令提示符的输出返回 null

c# - BackgroundWorker 中未处理的异常

c# - 在 C# 中检测此参数差异

C#:DataGridView 控件中的多行文本

c# - Windows 窗体应用程序 : Displaying rows of content