首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在java中提示输入密码时执行cmd行

如何在java中提示输入密码时执行cmd行
EN

Stack Overflow用户
提问于 2012-02-05 03:06:50
回答 4查看 6.6K关注 0票数 5

嘿,

我尝试从java应用程序转储postgresql数据库。

在cmd中,它运行正常:

代码语言:javascript
复制
pg_dump -U user database>outfile.sql 

和CMD提示输入密码

要从我的java访问此命令行:

代码语言:javascript
复制
Runtime.getRuntime().exec("pg_dump -U user database>outfile.sql"); 

现在它在等待密码。

我用Runtime.getRuntime().exec(String[])...试过了,但是什么都没有。

不知何故,我必须在.exec()方法中设置参数'password‘,

pg_dump语句不接受其命令行中的密码。

EN

回答 4

Stack Overflow用户

发布于 2012-02-05 14:46:31

谢谢麦克斯

我试过了

代码语言:javascript
复制
    Process p = Runtime.getRuntime().exec(cmd);
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
    bw.write("password"); 
    //bw.eriteLine();
    bw.flush();

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

但我有另一个解决方案:

代码语言:javascript
复制
    Process p = Runtime.getRuntime().exec("cmd /c start cmd.exe /C\"pg_dump -U user -W db>outfile.sql\"");

因此,黑色提示器打开时会显示“Password:”。写下密码,按回车键,它就会响。

这对我来说已经足够了。

谢谢

票数 2
EN

Stack Overflow用户

发布于 2013-12-02 17:40:41

未按"Enter“键。下面的修改为我做了一件事:

代码语言:javascript
复制
bw.write("password" + "\n");
票数 1
EN

Stack Overflow用户

发布于 2018-06-13 04:10:33

完整的工作解决方案:

代码语言:javascript
复制
Process process = Runtime.getRuntime().exec(cmd);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
bw.write("password\n"); 
bw.flush();

尝试更新@cortexiphan解决方案,但我的编辑被拒绝。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9143616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档