【问题标题】:how to send command to cmd with c#如何使用c#向cmd发送命令
【发布时间】:2013-11-05 12:28:43
【问题描述】:

我尝试开发 c# 应用程序以使用 adb shell 将 apk 安装到 android 手机,但我都是初学者。我无法向 cmd 发送命令。

   void getDevices()
    {
        Process p = new Process();
        ProcessStartInfo startInfo = new ProcessStartInfo(@"cmd.exe");

        p = Process.Start(startInfo);

        p.StandardInput.WriteLine(@"cd " + @"C:\Users\user\Desktop\adb\");
       // String output  = p.StandardOutput.ReadToEnd();





    }

【问题讨论】:

    标签: c# android


    【解决方案1】:

    共有三个选项:

    1. 启动时将命令传递给cmd.exe
    2. 启动后将命令发送至cmd.exe
    3. 编写批处理文件或 PowerShell 脚本

    启动时将命令传递给cmd.exe

    要将命令传递给cmd.exe,您可以使用cmd.exe-k-c 参数。

    例如,这将启动cmd.exe,显示已登录的用户,然后终止cmd.exe 进程:

    cmd.exe /c "whoami"
    

    查看this page 或 Google 了解更多示例。

    启动后将命令发送至cmd.exe

    另一种方法是先启动cmd.exe,然后再向它发送命令。已经有很多关于此的问题,但通常似乎有两种方法:

    1. 一次发送一个密钥,例如How can I send keypresses to a running process object?
    2. 将数据发送到进程的输入缓冲区,例如.NET: Inject Data into Input-Buffer of Process

    我不确定他们是否会使用 cmd.exe

    编写批处理文件或 PowerShell 脚本

    自动化cmd.exe 的更常见方法是编写批处理文件或 PowerShell 脚本。您可能还想考虑这些选项。

    【讨论】:

    • 您的“将数据发送到进程的输入缓冲区”的链接有 Visual Basic 的解决方案。 C# 中的任何内容?
    • 如果您发现手动转换代码有困难,请谷歌 VB.NET 到 C# 的转换工具。
    • 啊,所以你也没有直接回答我的问题。
    猜你喜欢
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 2018-10-27
    相关资源
    最近更新 更多