如何使用c#操作命令提示符?
How to operate command prompt using c#?
我创建了一个“hello.py”文件并将其放在与我的 c# .exe 相同的目录中
我 运行 通过 c# 在命令提示符下执行此操作
这是我目前的进度
using System.Diagnostics;
using System;
namespace c_hash_testing
{
class Primary
{
static void run()
{
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine("python hello.py");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
cmd.WaitForExit();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
}
static void Main(string[] args)
{
run();
Console.ReadKey();
}
}
}
但是当我 运行 它
输出结果为
Microsoft Windows [Version 10.0.19041.685]
(c) 2020 Microsoft Corporation. All rights reserved.
C:\ ... \Debug>python hello.py
hello world
C:\ ... \Debug>
但我特别需要“hello world”部分
那么有什么方法可以只读取已执行的部分,因为我不想每次 运行 其他东西时都对字符串进行排序,
还有什么可能的方法可以通过 c# 输入到 cmd 中吗?
例如,如果我做了一个 calc.py
输入 2 个数字然后打印它们的总和?
注意
我的目的不是整合python和c#,我只是以.py为例
所以请提供适用于.exe或任何命令提示符可执行文件的解决方案
尝试设置
cmd.StartInfo.Arguments = "/c python hello.py"
而不是使用 StandardInput 传递命令。
这相当于打字
cmd /c python hello.py
在命令提示符下,而不是键入:
cmd
其次是
python hello.py
我创建了一个“hello.py”文件并将其放在与我的 c# .exe 相同的目录中
我 运行 通过 c# 在命令提示符下执行此操作
这是我目前的进度
using System.Diagnostics;
using System;
namespace c_hash_testing
{
class Primary
{
static void run()
{
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine("python hello.py");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
cmd.WaitForExit();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
}
static void Main(string[] args)
{
run();
Console.ReadKey();
}
}
}
但是当我 运行 它 输出结果为
Microsoft Windows [Version 10.0.19041.685]
(c) 2020 Microsoft Corporation. All rights reserved.C:\ ... \Debug>python hello.py
hello worldC:\ ... \Debug>
但我特别需要“hello world”部分
那么有什么方法可以只读取已执行的部分,因为我不想每次 运行 其他东西时都对字符串进行排序,
还有什么可能的方法可以通过 c# 输入到 cmd 中吗?
例如,如果我做了一个 calc.py
输入 2 个数字然后打印它们的总和?
注意
我的目的不是整合python和c#,我只是以.py为例
所以请提供适用于.exe或任何命令提示符可执行文件的解决方案
尝试设置
cmd.StartInfo.Arguments = "/c python hello.py"
而不是使用 StandardInput 传递命令。
这相当于打字
cmd /c python hello.py
在命令提示符下,而不是键入:
cmd
其次是
python hello.py