Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Cmd进程不接受命令?_C#_Cmd - Fatal编程技术网

C# Cmd进程不接受命令?

C# Cmd进程不接受命令?,c#,cmd,C#,Cmd,我试图用以下参数读取命令的输出 ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe"); processStartInfo.Arguments = "nvidia-smi --query-gpu=utilization.memory --format=csv"; processStartInfo.UseShellExecute = false; processStartInfo.RedirectStandardOut

我试图用以下参数读取命令的输出

ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
processStartInfo.Arguments = "nvidia-smi --query-gpu=utilization.memory --format=csv";
processStartInfo.UseShellExecute = false;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.CreateNoWindow = true;
Debug.Write("Test1 \n"); // it prints
Process process = Process.Start(processStartInfo);
using (StreamReader streamReader = process.StandardOutput)
{
    Debug.Write("Test2 \n"); // it prints
    output = streamReader.ReadToEnd();
    Debug.Write("Test3 \n"); // it doesn t print
}

String[] substrings = output.Split(delimiter2);
我应该指出,如果我手动运行该命令,它是有效的。

以下是您需要的:

ProcessStartInfo processStartInfo = new ProcessStartInfo("nvidia-smi");
processStartInfo.Arguments = "--query-gpu=utilization.memory --format=csv";
processStartInfo.UseShellExecute = false;
首先-cmd.exe不是要启动的二进制文件,因为它没有nvidia命令行参数。你真的想发布-nvidia smi

如果您的PATH变量中没有nvidia smi,您可能会遇到诸如“未找到文件”之类的异常。在这种情况下,您必须使用二进制文件的完整路径

更新日期:25/02/2020

以下是我的作品:

还要注意,我的编译目标是64位:

如果手动运行,则无效,您只能手动运行一半的命令。键入
cmd/?
。另外,没有理由首先使用CMD。@如果我将参数更改为
processStartInfo.Arguments=“CMD/C nvidia smi--query gpu=utilization.memory--format=csv”,请标记我得到“'nvidia smi'未被识别为内部或外部命令、可操作程序或批处理文件。”您能更具体地说明我应该更改什么,以便它返回我在将参数直接运行到cmd时得到的输出吗?您没有理解mark的意思不确定这是否是您的意思,但我更新了这一行,如下所示
ProcessStartInfo ProcessStartInfo=new ProcessStartInfo(@“C:\Windows\System32\nvidia smi”)。现在,在尝试启动进程时,我在System.dll中遇到了这个错误“异常抛出:'System.ComponentModel.Win32Exception'。这是因为nvidia smi是一个64位二进制文件。将项目更改为构建为x64,而不是任何CPU。在构建为x64时,我会遇到完全相同的错误。你能帮我吗?试着在二进制名称中添加.exe