如何执行cmd命令行提示输入密码时使用java

问题描述:

Hy,如何执行cmd命令行提示输入密码时使用java

我尝试从我的Java应用程序中转储postgresql数据库。

在CMD它会确定:

pg_dump -U user database>outfile.sql 

和CMD提示输入密码

要访问我的Java这个命令行:

Runtime.getRuntime().exec("pg_dump -U user database>outfile.sql"); 

,现在等待的密码。

我试过Runtime.getRuntime().exec(String[])...但没有。

不知怎的,我必须.exec()方法设置的参数“密码”,

pg_dump的声明不接受它的命令行密码..

你可以重定向进程的标准输入,如描述this question

本质上,它们使用Process.getInputStream方法并写入此方法返回的流(例如使用BufferedWriter)。

您将获得exec()方法返回的必需Process对象。

感谢最多,

我想这

Process p = Runtime.getRuntime().exec(cmd); 
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream())); 
    bw.write("password"); 
    //bw.eriteLine(); 
    bw.flush(); 

,但仍然一无所获。我使用InputStreamReader来查看来自cmd执行的错误或消息,而不是。它仍然在等待“密码”。

但我有另一种解决方案:

Process p = Runtime.getRuntime().exec("cmd /c start cmd.exe /C\"pg_dump -U user -W db>outfile.sql\""); 

所以黑提词与打开 '密码:'。写密码,按回车键,它就会熄灭。

这对我来说已经足够了。

谢谢

错过按“Enter”键。 这个修改对我来说有效:

bw.write("password" + "\n");