在c#(Visual Studio)中调用cmd命令

在c#(Visual Studio)中调用cmd命令,c#,C#,我试图在c#中调用cmd命令,我发现以下代码: Process process = new Process(); ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.WindowStyle = ProcessWindowStyle.Hidden; startInfo.FileName = "cmd.exe"; startInfo.Arguments = "msg %username% Hello World"; proce

我试图在c#中调用cmd命令,我发现以下代码:

Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "msg %username% Hello World";
process.StartInfo = startInfo;
process.Start();

这将在屏幕上弹出一个对话框,文本为“Hello World”。(代码隐藏cmd窗口)。但是,什么也没发生。我还使用了调试方法,以100%确保程序达到此代码。有,但不显示弹出消息。有没有我可能弄错的想法?

您需要将
参数更改为:

startInfo.Arguments = "/C msg %username% Hello World";
cmd.exe
需要
/C
选项。这将告诉
cmd.exe
执行以下命令并再次终止



您可以在控制台窗口中使用
cmd/?
来显示
cmd.exe的所有选项和参数
您需要将
参数更改为以下内容:

startInfo.Arguments = "/C msg %username% Hello World";
cmd.exe
需要
/C
选项。这将告诉
cmd.exe
执行以下命令并再次终止



您可以在控制台窗口中使用
cmd/?
显示
cmd.exe的所有选项和参数

,感谢您的回复。在前面的代码中,我在TaskManager中看到了很多cmd.exe实例(可能是因为它没有关闭)。有了这段代码,它会关闭并且不会留在任务管理器中,但命令仍然不会执行,我不知道问题出在哪里…@MarijaNikola奇怪…我测试了你的代码(使用我的更改),它工作了…可能是因为
processWindowsStyle.Hidden
(我在控制台应用程序中测试过,所以我已经有了一个窗口)@MarijaNikola在winforms应用程序中再次测试,它对我有效(除了
%username%
似乎为空…)。感谢您的回复。在前面的代码中,我在TaskManager中看到了很多cmd.exe实例(可能是因为它没有关闭)。有了这段代码,它会关闭并且不会留在任务管理器中,但命令仍然不会执行,我不知道问题出在哪里…@MarijaNikola奇怪…我测试了你的代码(使用我的更改),它工作了…可能是因为
processWindowsStyle.Hidden
(我在控制台应用程序中测试过,所以我已经有了一个窗口)@MarijaNikola在winforms应用程序中再次测试,它对我有效(除了
%username%
似乎是空的…)。