JAVA Runtime.exec方法为什么不能执行del等命令

时间:2022-09-03 17:00:35
可以执行notepad,ping等命令,但是像cd,del这些就不行。
我在WINDOWS和SYSTEM32目录中搜索cd和del这两个exe文件也没有搜到.
哪位高人可以告诉我,像这些dos命令的程序文件到底存在什么地方?

先谢过!

24 个解决方案

#1


应该是command.com命令解释程序里吧,SYSTEM32下

#2


不清楚,给你顶顶吧

#3


引用 1 楼 rookie001 的回复:
应该是command.com命令解释程序里吧,SYSTEM32下


难道没有独立的文件?
那它是怎么运行的,高人解释一下 。

#4


所有的命令都应该在System32目录下吧。

#5


共同学习:
http://www.moon-soft.com/program/bbs/readelite1898.htm

#6


你的cd的用法对吗?一般可以用的
d:
cd/

#7


cd,del不是.exe,所以应该执行不了
但我觉得也没必要用它啊

#8


import java.io.File;
import java.io.IOException;


public class T {


public static void main(String[] args) throws IOException {

Runtime rt = Runtime.getRuntime();
// rt.exec("del d:/temp.txt");



rt.exec(" del d:/a.txt");
}

}

#9


引用 6 楼 zhanghai921 的回复:
你的cd的用法对吗?一般可以用的
d:
cd/


我这样写的
import java.io.File;
import java.io.IOException;


public class T {


public static void main(String[] args) throws IOException {

Runtime rt = Runtime.getRuntime();
// rt.exec("del d:/temp.txt");



rt.exec(" del d:/a.txt");
}

}

#10


通俗讲,这些命令都包含在cmd.exe中,所以应该这样执行:

“cmd /c del ...”

#11


楼上做的好使么? 偶不几到 不会突然弹出个命令窗口波..

我也实验过 的确不好使 不过类似cd这种操作都可以不用cmd命令的 文件的操作应该由JAVA的FILE系列来搞定 而读取目录同样也是用JAVA的FILE系列或者cmd的dir系列 如果一定要问为什么无法执行的话 那么请LZ想象一下这样做成功之后是什么....

#12


引用 11 楼 bearkin 的回复:
楼上做的好使么? 偶不几到 不会突然弹出个命令窗口波..

我也实验过 的确不好使 不过类似cd这种操作都可以不用cmd命令的 文件的操作应该由JAVA的FILE系列来搞定 而读取目录同样也是用JAVA的FILE系列或者cmd的dir系列 如果一定要问为什么无法执行的话 那么请LZ想象一下这样做成功之后是什么....

不止是这个命令;又比如tskill这个命令也执行不了;这可是很有用的命令哦

#13


该回复于2009-10-11 08:59:13被版主删除

#14


引用 12 楼 silence282351924 的回复:
引用 11 楼 bearkin 的回复:
楼上做的好使么? 偶不几到 不会突然弹出个命令窗口波..

我也实验过 的确不好使 不过类似cd这种操作都可以不用cmd命令的 文件的操作应该由JAVA的FILE系列来搞定 而读取目录同样也是用JAVA的FILE系列或者cmd的dir系列 如果一定要问为什么无法执行的话 那么请LZ想象一下这样做成功之后是什么....

不止是这个命令;又比如tskill这个命令也执行不了;这可是很有用的命令哦


补充下:有些命令(比如tskill)是需要你加一些东西的(忘记加哪了 好象WINDOWS默认也没有这个命令)
而且tskill有可能会终止你当前运行程序的 ...总之不要乱用就是了!

#15


引用 12 楼 silence282351924 的回复:
引用 11 楼 bearkin 的回复:
 楼上做的好使么? 偶不几到 不会突然弹出个命令窗口波..

 我也实验过 的确不好使 不过类似cd这种操作都可以不用cmd命令的 文件的操作应该由JAVA的FILE系列来搞定 而读取目录同样也是用JAVA的FILE系列或者cmd的dir系列 如果一定要问为什么无法执行的话 那么请LZ想象一下这样做成功之后是什么....

 不止是这个命令;又比如tskill这个命令也执行不了;这可是很有用的命令哦
哈哈你拼错了,应该是taskkill。如果没有的话检查一下是否是诸如“深度”之类的精简版Windows,把taskkill.exe精简掉了

#16


#17


我试了,可以删除的,java version "1.6.0_16"

public class Cmd{    
    
    public static void main(String [] args){     
        try{
            Runtime rt=Runtime.getRuntime();
            rt.exec("cmd /c del Cmd.class");
        }catch(Exception e){
        }
        System.out.println("...ok...");    
    }    
}

#18


Process proc = Runtime.getRuntime().exec("del d:/lsg.txt");
byte b[]=new byte[4096];
int r=0;
while((r=proc.getInputStream().read(b, 0, 4096))>-1){
 System.out.println(new String(b,0,r));
}
proc.waitFor(); 

#19


朋友,我的建议用java动态做个BAT文件,比如:
在C盘根目录下做一个exec.bat
exec.bat的内容如下:
d:
cd d:/temp
del lsg.tem

最后用下面代码执行bat文件,我相信一定可以执行cd和del命令
try {
FileOutputStream out=new FileOutputStream("c:/exec.bat");
out.write("d:\n".getBytes());
out.write("cd d:/temp\n".getBytes());
out.write("del lsg.tem\n".getBytes());
out.close();
Process proc = Runtime.getRuntime().exec("c:/exec.bat"); 
byte b[]=new byte[4096]; 
int r=0; 
while((r=proc.getInputStream().read(b, 0, 4096))>-1){ 
System.out.println(new String(b,0,r)); 

proc.waitFor();

File file=new File("c:/exec.bat");
if(file.exists()){
file.delete();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
File file=new File("c:/exec.bat");
if(file.exists()){
file.delete();
}
}

#20


引用 15 楼 shajunxing 的回复:
引用 12 楼 silence282351924 的回复:
 引用 11 楼 bearkin 的回复:
  楼上做的好使么? 偶不几到 不会突然弹出个命令窗口波..

  我也实验过 的确不好使 不过类似cd这种操作都可以不用cmd命令的 文件的操作应该由JAVA的FILE系列来搞定 而读取目录同样也是用JAVA的FILE系列或者cmd的dir系列 如果一定要问为什么无法执行的话 那么请LZ想象一下这样做成功之后是什么....

  不止是这个命令;又比如tskill这个命令也执行不了;这可是很有用的命令哦
哈哈你拼错了,应该是taskkill。如果没有的话检查一下是否是诸如“深度”之类的精简版Windows,把taskkill.exe精简掉了

你拼错了吧?应该是tskill吧

#21


引用 20 楼 silence282351924 的回复:
你拼错了吧?应该是tskill吧

也有taskkill,两个命令不一样的

#22


引用 21 楼 sohighthesky 的回复:
引用 20 楼 silence282351924 的回复:


 你拼错了吧?应该是tskill吧

 也有taskkill,两个命令不一样的

我还想请教exitvalue()这个方法是啥意思?如何得到一个进程的PID呢?谢谢您啦。。。我老郁闷了。

#23


那个del的肯定能用
java调用cmd命令 总之很麻烦啊
一般来说所有命令都能执行的 如果不能执行 就是
rt.exec("....");你的执行语句写错了

#24


杀进程的命令的确需要加一些东西才能运行 > <

#1


应该是command.com命令解释程序里吧,SYSTEM32下

#2


不清楚,给你顶顶吧

#3


引用 1 楼 rookie001 的回复:
应该是command.com命令解释程序里吧,SYSTEM32下


难道没有独立的文件?
那它是怎么运行的,高人解释一下 。

#4


所有的命令都应该在System32目录下吧。

#5


共同学习:
http://www.moon-soft.com/program/bbs/readelite1898.htm

#6


你的cd的用法对吗?一般可以用的
d:
cd/

#7


cd,del不是.exe,所以应该执行不了
但我觉得也没必要用它啊

#8


import java.io.File;
import java.io.IOException;


public class T {


public static void main(String[] args) throws IOException {

Runtime rt = Runtime.getRuntime();
// rt.exec("del d:/temp.txt");



rt.exec(" del d:/a.txt");
}

}

#9


引用 6 楼 zhanghai921 的回复:
你的cd的用法对吗?一般可以用的
d:
cd/


我这样写的
import java.io.File;
import java.io.IOException;


public class T {


public static void main(String[] args) throws IOException {

Runtime rt = Runtime.getRuntime();
// rt.exec("del d:/temp.txt");



rt.exec(" del d:/a.txt");
}

}

#10


通俗讲,这些命令都包含在cmd.exe中,所以应该这样执行:

“cmd /c del ...”

#11


楼上做的好使么? 偶不几到 不会突然弹出个命令窗口波..

我也实验过 的确不好使 不过类似cd这种操作都可以不用cmd命令的 文件的操作应该由JAVA的FILE系列来搞定 而读取目录同样也是用JAVA的FILE系列或者cmd的dir系列 如果一定要问为什么无法执行的话 那么请LZ想象一下这样做成功之后是什么....

#12


引用 11 楼 bearkin 的回复:
楼上做的好使么? 偶不几到 不会突然弹出个命令窗口波..

我也实验过 的确不好使 不过类似cd这种操作都可以不用cmd命令的 文件的操作应该由JAVA的FILE系列来搞定 而读取目录同样也是用JAVA的FILE系列或者cmd的dir系列 如果一定要问为什么无法执行的话 那么请LZ想象一下这样做成功之后是什么....

不止是这个命令;又比如tskill这个命令也执行不了;这可是很有用的命令哦

#13


该回复于2009-10-11 08:59:13被版主删除

#14


引用 12 楼 silence282351924 的回复:
引用 11 楼 bearkin 的回复:
楼上做的好使么? 偶不几到 不会突然弹出个命令窗口波..

我也实验过 的确不好使 不过类似cd这种操作都可以不用cmd命令的 文件的操作应该由JAVA的FILE系列来搞定 而读取目录同样也是用JAVA的FILE系列或者cmd的dir系列 如果一定要问为什么无法执行的话 那么请LZ想象一下这样做成功之后是什么....

不止是这个命令;又比如tskill这个命令也执行不了;这可是很有用的命令哦


补充下:有些命令(比如tskill)是需要你加一些东西的(忘记加哪了 好象WINDOWS默认也没有这个命令)
而且tskill有可能会终止你当前运行程序的 ...总之不要乱用就是了!

#15


引用 12 楼 silence282351924 的回复:
引用 11 楼 bearkin 的回复:
 楼上做的好使么? 偶不几到 不会突然弹出个命令窗口波..

 我也实验过 的确不好使 不过类似cd这种操作都可以不用cmd命令的 文件的操作应该由JAVA的FILE系列来搞定 而读取目录同样也是用JAVA的FILE系列或者cmd的dir系列 如果一定要问为什么无法执行的话 那么请LZ想象一下这样做成功之后是什么....

 不止是这个命令;又比如tskill这个命令也执行不了;这可是很有用的命令哦
哈哈你拼错了,应该是taskkill。如果没有的话检查一下是否是诸如“深度”之类的精简版Windows,把taskkill.exe精简掉了

#16


#17


我试了,可以删除的,java version "1.6.0_16"

public class Cmd{    
    
    public static void main(String [] args){     
        try{
            Runtime rt=Runtime.getRuntime();
            rt.exec("cmd /c del Cmd.class");
        }catch(Exception e){
        }
        System.out.println("...ok...");    
    }    
}

#18


Process proc = Runtime.getRuntime().exec("del d:/lsg.txt");
byte b[]=new byte[4096];
int r=0;
while((r=proc.getInputStream().read(b, 0, 4096))>-1){
 System.out.println(new String(b,0,r));
}
proc.waitFor(); 

#19


朋友,我的建议用java动态做个BAT文件,比如:
在C盘根目录下做一个exec.bat
exec.bat的内容如下:
d:
cd d:/temp
del lsg.tem

最后用下面代码执行bat文件,我相信一定可以执行cd和del命令
try {
FileOutputStream out=new FileOutputStream("c:/exec.bat");
out.write("d:\n".getBytes());
out.write("cd d:/temp\n".getBytes());
out.write("del lsg.tem\n".getBytes());
out.close();
Process proc = Runtime.getRuntime().exec("c:/exec.bat"); 
byte b[]=new byte[4096]; 
int r=0; 
while((r=proc.getInputStream().read(b, 0, 4096))>-1){ 
System.out.println(new String(b,0,r)); 

proc.waitFor();

File file=new File("c:/exec.bat");
if(file.exists()){
file.delete();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
File file=new File("c:/exec.bat");
if(file.exists()){
file.delete();
}
}

#20


引用 15 楼 shajunxing 的回复:
引用 12 楼 silence282351924 的回复:
 引用 11 楼 bearkin 的回复:
  楼上做的好使么? 偶不几到 不会突然弹出个命令窗口波..

  我也实验过 的确不好使 不过类似cd这种操作都可以不用cmd命令的 文件的操作应该由JAVA的FILE系列来搞定 而读取目录同样也是用JAVA的FILE系列或者cmd的dir系列 如果一定要问为什么无法执行的话 那么请LZ想象一下这样做成功之后是什么....

  不止是这个命令;又比如tskill这个命令也执行不了;这可是很有用的命令哦
哈哈你拼错了,应该是taskkill。如果没有的话检查一下是否是诸如“深度”之类的精简版Windows,把taskkill.exe精简掉了

你拼错了吧?应该是tskill吧

#21


引用 20 楼 silence282351924 的回复:
你拼错了吧?应该是tskill吧

也有taskkill,两个命令不一样的

#22


引用 21 楼 sohighthesky 的回复:
引用 20 楼 silence282351924 的回复:


 你拼错了吧?应该是tskill吧

 也有taskkill,两个命令不一样的

我还想请教exitvalue()这个方法是啥意思?如何得到一个进程的PID呢?谢谢您啦。。。我老郁闷了。

#23


那个del的肯定能用
java调用cmd命令 总之很麻烦啊
一般来说所有命令都能执行的 如果不能执行 就是
rt.exec("....");你的执行语句写错了

#24


杀进程的命令的确需要加一些东西才能运行 > <