java里面执行windows命令

1  启动一个java程序并输出日志:

List<String> commadList = new ArrayList<String>();

commadList.add("cmd");

commadList.add("/c");

commadList.add("java -Dfile.encoding=GBK -classpath ./;classes;bin;lib/system/*;lib/user/*;lib/* -XX:PermSize=256m -XX:MaxPermSize=512m -Xms512m -Xmx512m com.sunline.flowbank.cr.core.CRMain");

commadList.add("start");

commadList.add(subsysid);

logger.info("开始启动" +obj.getSubsysId() +"子系统!" );

ProcessBuilder pbuilder = new ProcessBuilder(commadList);

pbuilder.directory(new File(projPath));

proc = pbuilder.start();

 

2  关闭一个进程并输出日志

if( "".equals(obj.getProcId()))

{

cmd = "cmd /c wmic process where caption=\"java.exe\" get  commandline,processid | findstr /C:\"CRMain start "+obj.getSubsysId()+"\"";

}else

{

cmd = "cmd /c wmic process where \"caption='java.exe' and processid='"+obj.getProcId()+"'\" get processid | findstr \""+obj.getProcId()+"\"";

}

Process proc  = Runtime.getRuntime().exec(cmd);

InputStream is = proc.getInputStream(); 

InputStreamReader isr = new InputStreamReader(is, "GBK"); 

BufferedReader br = new BufferedReader(isr); 

String line; 

while ((line = br.readLine()) != null) { 

logger.info(line); 

//if(!line.equals(""))

//System.out.println( line.substring(line.lastIndexOf("CRMain start test")+"CRMain start test".length(),line.length()).trim());

if(!line.equals(""))

{

obj.setProcId(line.trim());

 

for(SubsysObj subtmp : subsylist)

{

if(subtmp.equals(obj))

obj.setMsg(subtmp.getMsg());

}

return true;

}

 

obj.setProcId("");

 

3  dos下查看和杀死进程

 

查看进程是否在运行

tasklist /nh|find /i "进程名.exe"

ps:双引号中的进程名也可以是部分匹配

 

杀进程:

taskkill /im 进程名

taskkill /pid 进程序号 -t(结束该进程) -f(强制结束该进程以及所有子进程)

wmic process where name="进程名" call terminate

ntsd -c p -p 进程序号

ps:第一种和第三种可同时关闭多个进程名相同的进程

 

4  查询一个端口是否开启

netstat -aon|findstr 端口号

你可能感兴趣的:(dos杀死进程,dos查看进程,java调用dos命令,查询java进程号,查询一个端口是否打开)