C# Winforms:在进程中回答使用cmd.exe发出的命令的输出

22 浏览
0 Comments

C# Winforms:在进程中回答使用cmd.exe发出的命令的输出

我的目标是能够在不被提示输入密码的情况下执行命令。在Windows命令行中有没有办法实现这一点呢?在Linux中,我觉得我可以将密码发送到标准输入流或其他地方,但我不确定在Windows中是否可以这样做。

谢谢!

0
0 Comments

问题的原因是在使用cmd.exe中的进程发出命令后,无法正确获取命令的输出。

解决方法是使用C# WinForms中的Process类和相关方法来执行cmd.exe命令,并获取其输出。

首先,需要在代码中创建一个Process实例,并设置其属性以指定要执行的命令和参数。然后,通过调用Process实例的Start方法来执行命令。

为了获取命令的输出,可以使用Process实例的StandardOutput属性来访问命令的标准输出流。通过调用Process实例的BeginOutputReadLine方法来开始异步读取输出流,并通过注册事件处理程序来处理每一行的输出。

在事件处理程序中,可以使用Process实例的OutputDataReceived事件来处理每一行的输出。通过检查事件参数中的Data属性,可以获取每一行的输出内容。

以下是使用C# WinForms解决该问题的示例代码:

using System;
using System.Diagnostics;
namespace YourNamespace
{
    public class YourClass
    {
        public void ExecuteCmdCommand()
        {
            Process process = new Process();
            process.StartInfo.FileName = "cmd.exe";
            process.StartInfo.Arguments = "/c your_command_here";
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardOutput = true;
            process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
            process.Start();
            process.BeginOutputReadLine();
            process.WaitForExit();
        }
        private void OutputHandler(object sender, DataReceivedEventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(e.Data))
            {
                // Handle each line of output here
                Console.WriteLine(e.Data);
            }
        }
    }
}

通过使用上述代码,可以在C# WinForms中执行cmd.exe命令,并将其输出作为字符串处理。

0
0 Comments

问题的出现的原因是在使用cmd.exe中的进程发出的命令的输出。问题的解决方法是使用两种方式来设置PGPASSWORD环境变量或使用密码文件pgpass.conf。

具体的解决方法如下:

方法一:设置环境变量PGPASSWORD,例如使用命令set PGPASSWORD=yoursecretpassword

方法二:使用密码文件pgpass.conf,文件路径为%APPDATA%\postgresql\pgpass.conf。在文件中按照文档的格式进行配置。例如,要连接本地5432服务器上的postgres数据库,使用postgres角色和密码12345,可以添加以下配置:

localhost:5432:postgres:postgres:12345

需要注意的是,不要使用127.0.0.1,只能使用localhost。

回答者更新了回答,表示文件也可以使用上述方法。并告知问题提问者如果使用PGPASSWORD,则不要使用-W选项。

以上就是关于C# Winforms中使用cmd.exe进程发出的命令的输出的问题的原因和解决方法。

0
0 Comments

问题的出现原因是,用户想要通过使用cmd.exe中的进程来执行一个命令,并且将命令的输出作为结果返回。然而,他们在尝试解决这个问题时遇到了困难,因为找不到适用于Windows的解决方案。

解决方法是将命令写入一个.bat文件中,并在该文件中执行。这个.bat文件首先将目录更改为postres目录,然后设置环境变量PGPASSWORD,并执行复制命令将查询结果复制到一个csv文件中。然后清除环境变量,并返回到根目录。

这是一个解决该问题的示例代码:

cd C:\Program Files\PostgreSQL\9.5\bin\

set PGPASSWORD=yourpassword

psql -d databasename -U yourusername -w -c "\COPY (select * from yourtable) TO 'c:/Users/yourdirectory/yourcsvfilename.csv' DELIMITER '|' CSV HEADER;"

set PGPASSWORD=

cd c:\

希望这个解决方法可以帮助到其他人解决类似的问题。

0