我想显示当前目录下的树型结构,可是这样执行dos总是一闪而过,怎么让它不自动关闭,
有时候Java在dos下执行命令有时候窗口会自动关闭,有时候不会关闭呢,(比如打成jar包,会有一个dos窗口一闪而过)
求高手好好解释解释,在这里先谢过了。
急求,,,答案
27 个解决方案
#1
Runtime.getRuntime().exec("cmd.exe /c start tree");
不好意思,这是完整代码,求解了,顶了
不好意思,这是完整代码,求解了,顶了
#2
打成jar包后,在命令行执行
java -jar xxx.jar
java -jar xxx.jar
#3
cmd /c 是执行完命令后关闭命令窗口。
cmd /k 是执行完命令后不关闭命令窗口。
cmd /k 是执行完命令后不关闭命令窗口。
#4
你想要什么样的 ?
#5
pause ?
#6
"cmd.exe /k start tree" 还是关闭dos窗口,我想Runtime.getRuntime().exec("cmd.exe /k start tree");执行完,dos窗口不关闭,顶顶,,,
分数我可以加的,帮帮忙了,,
分数我可以加的,帮帮忙了,,
#7
这种效果吗?
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
#8
源代码
import java.io.IOException;
public class TestExec {
Process process;
public static void main(String[] args) {
TestExec test = new TestExec();
String open = "cmd.exe /k start tree";
if (args.length == 0) {
test.exec(open);
}
}
public void sendParams(String params) {
}
public void exec(String cmd) {
Runtime run = Runtime.getRuntime();
try {
process= run.exec(cmd);
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.IOException;
public class TestExec {
Process process;
public static void main(String[] args) {
TestExec test = new TestExec();
String open = "cmd.exe /k start tree";
if (args.length == 0) {
test.exec(open);
}
}
public void sendParams(String params) {
}
public void exec(String cmd) {
Runtime run = Runtime.getRuntime();
try {
process= run.exec(cmd);
} catch (IOException e) {
e.printStackTrace();
}
}
}
#9
批处理文件是最后加pause
#10
如果是在程序中的话。。完全可以不管dos窗口是不是关闭。。
因为你可以通过程序把执行后的dos窗口的信息取到。。。
在java中调用cmd,如果我没有记错的话,窗口的执行过程可以在myeclipse的控制台打印出来。。而真正的dos窗口是不用打开的。。。
你说的打开后关闭。。那应该是在cmd下面执行dos命令的结果。。。
因为你可以通过程序把执行后的dos窗口的信息取到。。。
在java中调用cmd,如果我没有记错的话,窗口的执行过程可以在myeclipse的控制台打印出来。。而真正的dos窗口是不用打开的。。。
你说的打开后关闭。。那应该是在cmd下面执行dos命令的结果。。。
#11
我的程序
//用线程的方式读取DOS窗口的输出内容
class StreamDrainer implements Runnable {
private InputStream ins;
public StreamDrainer(InputStream ins) {
this.ins = ins;
}
public void run(){
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(ins));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
//在dos下开始执行数据库备份与恢复
class DatabaseBR{
public DatabaseBR(){
}
public int StartRun(DatabaseBuckup databaseBuckup,String state,String statevalue)
{
int exitvalue=-1;
Runtime rt = Runtime.getRuntime();
Process processexp = null;
try{
//截取文件名称设置日志文件名
String file=" file=" + "'" + databaseBuckup.getFilepathname() + "'";
String logfilename=databaseBuckup.getFilepathname().substring(0,
databaseBuckup.getFilepathname().lastIndexOf("."));
//得到在dos下执行的命令
String exp = state + databaseBuckup.getDatabasename() + "/" +
databaseBuckup.getDatabasepassword() + "@" + databaseBuckup.getNetname() +
statevalue + file;
//开始执行命令
System.out.println(exp);
processexp=rt.exec(exp);
new Thread(new StreamDrainer(processexp.getInputStream())).start();
new Thread(new StreamDrainer(processexp.getErrorStream())).start();
processexp.getOutputStream().close();
//等待线程执行结束后返回
try {
exitvalue=processexp.waitFor();
System.out.println(exitvalue);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}catch(IOException e){
e.printStackTrace();
}
return exitvalue;
}
}
//用线程的方式读取DOS窗口的输出内容
class StreamDrainer implements Runnable {
private InputStream ins;
public StreamDrainer(InputStream ins) {
this.ins = ins;
}
public void run(){
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(ins));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
//在dos下开始执行数据库备份与恢复
class DatabaseBR{
public DatabaseBR(){
}
public int StartRun(DatabaseBuckup databaseBuckup,String state,String statevalue)
{
int exitvalue=-1;
Runtime rt = Runtime.getRuntime();
Process processexp = null;
try{
//截取文件名称设置日志文件名
String file=" file=" + "'" + databaseBuckup.getFilepathname() + "'";
String logfilename=databaseBuckup.getFilepathname().substring(0,
databaseBuckup.getFilepathname().lastIndexOf("."));
//得到在dos下执行的命令
String exp = state + databaseBuckup.getDatabasename() + "/" +
databaseBuckup.getDatabasepassword() + "@" + databaseBuckup.getNetname() +
statevalue + file;
//开始执行命令
System.out.println(exp);
processexp=rt.exec(exp);
new Thread(new StreamDrainer(processexp.getInputStream())).start();
new Thread(new StreamDrainer(processexp.getErrorStream())).start();
processexp.getOutputStream().close();
//等待线程执行结束后返回
try {
exitvalue=processexp.waitFor();
System.out.println(exitvalue);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}catch(IOException e){
e.printStackTrace();
}
return exitvalue;
}
}
#12
你把这些命令写在一个bat文件,使用
run.exec("cmd.exe /c start a.bat");
在bat文件中最后加上加上一个停顿的命令看看是否可以puse
run.exec("cmd.exe /c start a.bat");
在bat文件中最后加上加上一个停顿的命令看看是否可以puse
#13
我也想知道答案。。。
#14
必须用dos显示文件目录树型结构,,
也就是相当于在dos下执行tree这个命令,这样可以显示目录树型结构,我想要这种效果,
也就是相当于在dos下执行tree这个命令,这样可以显示目录树型结构,我想要这种效果,
#15
学习了!我也不明白!
#16
如果在批处理写入tree这个符号,再采用run.exec("cmd.exe /c start a.bat");
这个方式,dos窗口不会闭了,但有没有不用批处理文件的,因为不允许有多允的文件
这个方式,dos窗口不会闭了,但有没有不用批处理文件的,因为不允许有多允的文件
#17
还是谢谢了
#18
这个你试没啊
#19
不好意思,我没看请,我试试。。。。
#20
你能解释一下什么意思么???
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
关于 /f
call
start
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
关于 /f
call
start
#21
你的分两次执行吧,第一次cmd,第二次tree,windows中要不关闭doc窗口是这样弄得。不知道java中这样行不行。
#22
JDK 5.0的新特性 有执行本地方法的,好好去看。
#23
#24
你能解释一下什么意思么???
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
关于 /f
call
start
#25
看到过N个批处理后边加pause。
弱弱的问一问,批处理有pause吗???
9楼的答案
批处理文件是最后加pause
很有问题。
win7下可以用timeout命令来暂停,还有一个常用的办法,就是ping本地IP达到暂停的效果,其实,你可以自己写一个延时的程序,不过java写出来的编译为exe的话,就超大了
弱弱的问一问,批处理有pause吗???
9楼的答案
批处理文件是最后加pause
很有问题。
win7下可以用timeout命令来暂停,还有一个常用的办法,就是ping本地IP达到暂停的效果,其实,你可以自己写一个延时的程序,不过java写出来的编译为exe的话,就超大了
#26
引用 18 楼 zqfddqr 的回复:
引用 7 楼 zqfddqr 的回复:
这种效果吗?
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
这个你试没啊
你能解释一下什么意思么???
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
关于 /f
call
start
start 具体参阅http://blog.sina.com.cn/s/blog_4e11110b0100qyc3.html
call 具体的看http://hi.baidu.com/ynnal911/blog/item/cc4d484f9f63c9f4d62afc56.html
其实可以百度的 ....
白话一点就是start开一个窗口 call不让他关了 /f 是让你看清楚是什么显示出来了
引用 7 楼 zqfddqr 的回复:
这种效果吗?
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
这个你试没啊
你能解释一下什么意思么???
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
关于 /f
call
start
start 具体参阅http://blog.sina.com.cn/s/blog_4e11110b0100qyc3.html
call 具体的看http://hi.baidu.com/ynnal911/blog/item/cc4d484f9f63c9f4d62afc56.html
其实可以百度的 ....
白话一点就是start开一个窗口 call不让他关了 /f 是让你看清楚是什么显示出来了
#27
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
#1
Runtime.getRuntime().exec("cmd.exe /c start tree");
不好意思,这是完整代码,求解了,顶了
不好意思,这是完整代码,求解了,顶了
#2
打成jar包后,在命令行执行
java -jar xxx.jar
java -jar xxx.jar
#3
cmd /c 是执行完命令后关闭命令窗口。
cmd /k 是执行完命令后不关闭命令窗口。
cmd /k 是执行完命令后不关闭命令窗口。
#4
你想要什么样的 ?
#5
pause ?
#6
"cmd.exe /k start tree" 还是关闭dos窗口,我想Runtime.getRuntime().exec("cmd.exe /k start tree");执行完,dos窗口不关闭,顶顶,,,
分数我可以加的,帮帮忙了,,
分数我可以加的,帮帮忙了,,
#7
这种效果吗?
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
#8
源代码
import java.io.IOException;
public class TestExec {
Process process;
public static void main(String[] args) {
TestExec test = new TestExec();
String open = "cmd.exe /k start tree";
if (args.length == 0) {
test.exec(open);
}
}
public void sendParams(String params) {
}
public void exec(String cmd) {
Runtime run = Runtime.getRuntime();
try {
process= run.exec(cmd);
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.IOException;
public class TestExec {
Process process;
public static void main(String[] args) {
TestExec test = new TestExec();
String open = "cmd.exe /k start tree";
if (args.length == 0) {
test.exec(open);
}
}
public void sendParams(String params) {
}
public void exec(String cmd) {
Runtime run = Runtime.getRuntime();
try {
process= run.exec(cmd);
} catch (IOException e) {
e.printStackTrace();
}
}
}
#9
批处理文件是最后加pause
#10
如果是在程序中的话。。完全可以不管dos窗口是不是关闭。。
因为你可以通过程序把执行后的dos窗口的信息取到。。。
在java中调用cmd,如果我没有记错的话,窗口的执行过程可以在myeclipse的控制台打印出来。。而真正的dos窗口是不用打开的。。。
你说的打开后关闭。。那应该是在cmd下面执行dos命令的结果。。。
因为你可以通过程序把执行后的dos窗口的信息取到。。。
在java中调用cmd,如果我没有记错的话,窗口的执行过程可以在myeclipse的控制台打印出来。。而真正的dos窗口是不用打开的。。。
你说的打开后关闭。。那应该是在cmd下面执行dos命令的结果。。。
#11
我的程序
//用线程的方式读取DOS窗口的输出内容
class StreamDrainer implements Runnable {
private InputStream ins;
public StreamDrainer(InputStream ins) {
this.ins = ins;
}
public void run(){
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(ins));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
//在dos下开始执行数据库备份与恢复
class DatabaseBR{
public DatabaseBR(){
}
public int StartRun(DatabaseBuckup databaseBuckup,String state,String statevalue)
{
int exitvalue=-1;
Runtime rt = Runtime.getRuntime();
Process processexp = null;
try{
//截取文件名称设置日志文件名
String file=" file=" + "'" + databaseBuckup.getFilepathname() + "'";
String logfilename=databaseBuckup.getFilepathname().substring(0,
databaseBuckup.getFilepathname().lastIndexOf("."));
//得到在dos下执行的命令
String exp = state + databaseBuckup.getDatabasename() + "/" +
databaseBuckup.getDatabasepassword() + "@" + databaseBuckup.getNetname() +
statevalue + file;
//开始执行命令
System.out.println(exp);
processexp=rt.exec(exp);
new Thread(new StreamDrainer(processexp.getInputStream())).start();
new Thread(new StreamDrainer(processexp.getErrorStream())).start();
processexp.getOutputStream().close();
//等待线程执行结束后返回
try {
exitvalue=processexp.waitFor();
System.out.println(exitvalue);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}catch(IOException e){
e.printStackTrace();
}
return exitvalue;
}
}
//用线程的方式读取DOS窗口的输出内容
class StreamDrainer implements Runnable {
private InputStream ins;
public StreamDrainer(InputStream ins) {
this.ins = ins;
}
public void run(){
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(ins));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
//在dos下开始执行数据库备份与恢复
class DatabaseBR{
public DatabaseBR(){
}
public int StartRun(DatabaseBuckup databaseBuckup,String state,String statevalue)
{
int exitvalue=-1;
Runtime rt = Runtime.getRuntime();
Process processexp = null;
try{
//截取文件名称设置日志文件名
String file=" file=" + "'" + databaseBuckup.getFilepathname() + "'";
String logfilename=databaseBuckup.getFilepathname().substring(0,
databaseBuckup.getFilepathname().lastIndexOf("."));
//得到在dos下执行的命令
String exp = state + databaseBuckup.getDatabasename() + "/" +
databaseBuckup.getDatabasepassword() + "@" + databaseBuckup.getNetname() +
statevalue + file;
//开始执行命令
System.out.println(exp);
processexp=rt.exec(exp);
new Thread(new StreamDrainer(processexp.getInputStream())).start();
new Thread(new StreamDrainer(processexp.getErrorStream())).start();
processexp.getOutputStream().close();
//等待线程执行结束后返回
try {
exitvalue=processexp.waitFor();
System.out.println(exitvalue);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}catch(IOException e){
e.printStackTrace();
}
return exitvalue;
}
}
#12
你把这些命令写在一个bat文件,使用
run.exec("cmd.exe /c start a.bat");
在bat文件中最后加上加上一个停顿的命令看看是否可以puse
run.exec("cmd.exe /c start a.bat");
在bat文件中最后加上加上一个停顿的命令看看是否可以puse
#13
我也想知道答案。。。
#14
必须用dos显示文件目录树型结构,,
也就是相当于在dos下执行tree这个命令,这样可以显示目录树型结构,我想要这种效果,
也就是相当于在dos下执行tree这个命令,这样可以显示目录树型结构,我想要这种效果,
#15
学习了!我也不明白!
#16
如果在批处理写入tree这个符号,再采用run.exec("cmd.exe /c start a.bat");
这个方式,dos窗口不会闭了,但有没有不用批处理文件的,因为不允许有多允的文件
这个方式,dos窗口不会闭了,但有没有不用批处理文件的,因为不允许有多允的文件
#17
还是谢谢了
#18
这个你试没啊
#19
不好意思,我没看请,我试试。。。。
#20
你能解释一下什么意思么???
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
关于 /f
call
start
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
关于 /f
call
start
#21
你的分两次执行吧,第一次cmd,第二次tree,windows中要不关闭doc窗口是这样弄得。不知道java中这样行不行。
#22
JDK 5.0的新特性 有执行本地方法的,好好去看。
#23
#24
你能解释一下什么意思么???
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
关于 /f
call
start
#25
看到过N个批处理后边加pause。
弱弱的问一问,批处理有pause吗???
9楼的答案
批处理文件是最后加pause
很有问题。
win7下可以用timeout命令来暂停,还有一个常用的办法,就是ping本地IP达到暂停的效果,其实,你可以自己写一个延时的程序,不过java写出来的编译为exe的话,就超大了
弱弱的问一问,批处理有pause吗???
9楼的答案
批处理文件是最后加pause
很有问题。
win7下可以用timeout命令来暂停,还有一个常用的办法,就是ping本地IP达到暂停的效果,其实,你可以自己写一个延时的程序,不过java写出来的编译为exe的话,就超大了
#26
引用 18 楼 zqfddqr 的回复:
引用 7 楼 zqfddqr 的回复:
这种效果吗?
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
这个你试没啊
你能解释一下什么意思么???
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
关于 /f
call
start
start 具体参阅http://blog.sina.com.cn/s/blog_4e11110b0100qyc3.html
call 具体的看http://hi.baidu.com/ynnal911/blog/item/cc4d484f9f63c9f4d62afc56.html
其实可以百度的 ....
白话一点就是start开一个窗口 call不让他关了 /f 是让你看清楚是什么显示出来了
引用 7 楼 zqfddqr 的回复:
这种效果吗?
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
这个你试没啊
你能解释一下什么意思么???
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");
关于 /f
call
start
start 具体参阅http://blog.sina.com.cn/s/blog_4e11110b0100qyc3.html
call 具体的看http://hi.baidu.com/ynnal911/blog/item/cc4d484f9f63c9f4d62afc56.html
其实可以百度的 ....
白话一点就是start开一个窗口 call不让他关了 /f 是让你看清楚是什么显示出来了
#27
Runtime.getRuntime().exec("cmd.exe /c start call tree /f");