当前位置:首页 » 编程语言 » java调用命令行

java调用命令行

发布时间: 2022-05-17 11:48:10

java或C#调用命令行批处理命令如何获得返回值

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行] 先看看如上的批处理,其中一个命令是mp,其它的参数我们就不说了。2个点 > 1.sql 这个是默认的输出,也就是内容输出 2>Nul 这个是错误输出,也就是如果 mp出现了异常,则不会显示在屏幕上,而是被丢弃到 nul %errorlevel% 这个是前一个命令执行的返回值,0代表正常 上述逻辑是: 执行一个程序 如果正常,则转到下一个命令,打印出OK,然后转到结束 如果异常,则转到error处理,打印出 ERROR,转到结束 打印内容是随意的 我们的java/C#程序可以读取进程的输出内容,并判断是否批处理执行成功来源: blog.csdn 作者:老紫竹

② 如何使用命令行编译运行java程序

要想编译和运行java文件,很简单,只需要两个命令:
(1)javac:作用:编译java文件;使用方法: javac Hello.java ,如果不出错的话,在与Hello.java 同一目录下会生成一个Hello.class文件,这个class文件是操作系统能够使用和运行的文件。
(2)java: 作用:运行.class文件;使用方法:java Hello,如果不出错的话,会执行Hello.class文件。注意:这里的Hello后面不需要扩展名。
下面举例说明:
假设我有一个Hello.java文件放在D:\javatest 文件夹下。
打开cmd命令窗口,会出现C:\user\lenovo 这里出现的是系统用户名,这里我们需要将路径转移到java文件所在目录。
紧接着输入 D:回车,会出现一下界面:
这时候我们需要定位到java文件所在目录(这里是javatest目录),接着输入 cd javatest 回车。
此时进入到D:\javatest目录中,此时的Hello.java文件就在这里
这时候我们就可以用javac命令编译啦,输入javac Hello.java回车
这里如果没有任何提示表示编译成功,此时打开d:\javatest文件夹你会发现此时多了一个名为Hello.class的文件,这就是操作系统能够运行的文件。
接着输入 java Hello回车,你就会看到文件被运行的结果。
这里有几个要注意的问题

第一:Hello.java中的内容是一个类,这个类的名字与.java文件名字必须完全一致。如果不一致将出错。这里当你通过eclipse创建一个类文件的时候你就会理解的更清楚了,这里不赘述。
第二:javac 和 java 命令的使用方法要注意,格式。
第三:要使用这两命令,必须配置好环境变量。

③ 如何用java启动windows命令行程序

先请编译和运行下面程序:

import java.util.*;
import java.io.*;

public class BadExecJavac2
{

public static void main(String args[])

{

try

{

Runtime rt = Runtime.getRuntime();

Process proc = rt.exec("javac");

int exitVal = proc.waitFor();

System.out.println("Process exitValue: " + exitVal);

} catch (Throwable t){

t.printStackTrace();

}

}
}

我们知道javac命令,当不带参数运行javac
程序时,它将输出帮助说明,为什么上面程序不产生任何输出并挂起,永不完成呢?java文档上说,由于有些本地平台为标准输入和输出流所提供的缓冲区大小
有限,如果不能及时写入子进程的输入流或者读取子进程的输出流,可能导致子进程阻塞,甚至陷入死锁。所以,上面的程序应改写为:

import java.util.*;

import java.io.*;

public class MediocreExecJavac

{

public static void main(String args[])

{

try

{

Runtime rt = Runtime.getRuntime();

Process proc = rt.exec("javac");

InputStream stderr = proc.getErrorStream();

InputStreamReader isr = new InputStreamReader(stderr);

BufferedReader br = new BufferedReader(isr);

String line = null;

System.out.println("");

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

System.out.println(line);

System.out.println("");

int exitVal = proc.waitFor();

System.out.println("Process exitValue: " + exitVal);

} catch (Throwable t){

t.printStackTrace();

}

}

}

下面是正确的输出:

D:\java>java MediocreExecJavac

Usage: javac <options>

where possible options include:

-g Generate all debugging info

-g:none Generate no debugging info

-g:{lines,vars,source} Generate only some debugging info

-nowarn Generate no warnings

-verbose Output messages about what the compiler is doing

-deprecation Output source locations where deprecated APIs are used

-classpath Specify where to find user class files

-cp Specify where to find user class files

-sourcepath Specify where to find input source files

-bootclasspath Override location of bootstrap class files

-extdirs Override location of installed extensions

-endorseddirs Override location of endorsed standards path

-d Specify where to place generated class files

-encoding Specify character encoding used by source files

-source Provide source compatibility with specified release

-target Generate class files for specific VM version

-version Version information

-help Print a synopsis of standard options

-X Print a synopsis of nonstandard options

-J Pass directly to the runtime system

Process exitValue: 2

D:\java>

下面是一个更一般的程序,它用两个线程同步清空标准错误流和标准输出流,并能根据你所使用的windows操作系统选择windows命令解释器command.com或cmd.exe,然后执行你提供的命令。

import java.util.*;

import java.io.*;

class StreamGobbler extends Thread

{

InputStream is;

String type; //输出流的类型ERROR或OUTPUT

StreamGobbler(InputStream is, String type)

{

this.is = is;

this.type = type;

}

public void run()

{

try

{

InputStreamReader isr = new InputStreamReader(is);

BufferedReader br = new BufferedReader(isr);

String line=null;

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

{

System.out.println(type + ">" + line);

System.out.flush();

}

} catch (IOException ioe)

{

ioe.printStackTrace();

}

}

}

public class GoodWindowsExec

{

public static void main(String args[])

{

if (args.length < 1)

{

System.out.println("USAGE: java GoodWindowsExec ");

System.exit(1);

}

try

{

String osName = System.getProperty("os.name" );

System.out.println("osName: " + osName);

String[] cmd = new String[3];

if(osName.equals("Windows XP") ||osName.equals("Windows 2000"))

{

cmd[0] = "cmd.exe" ;

cmd[1] = "/C" ;

cmd[2] = args[0];

}

else if( osName.equals( "Windows 98" ) )

{

cmd[0] = "command.com" ;

cmd[1] = "/C" ;

cmd[2] = args[0];

}

Runtime rt = Runtime.getRuntime();

System.out.println("Execing " + cmd[0] + " " + cmd[1]+ " " + cmd[2]);

Process proc = rt.exec(cmd);

// any error message?

StreamGobbler errorGobbler = new StreamGobbler(proc.getErrorStream(), "ERROR");

// any output?

StreamGobbler outputGobbler = new StreamGobbler(proc.getInputStream(), "OUTPUT");

// kick them off

errorGobbler.start();

outputGobbler.start();

// any error???

int exitVal = proc.waitFor();

System.out.println("ExitValue: " + exitVal);

} catch (Throwable t){

t.printStackTrace();

}

}

}

下面是一个测试结果:

D:\java>java GoodWindowsExec " Test.java Test1.java"

osName: Windows XP

Execing cmd.exe /C Test.java Test1.java

OUTPUT>已复制 1 个文件。

ExitValue: 0

D:\java>

下面的测试都能通过(windows xp+jdk1.5)

D:\java>java GoodWindowsExec dir

D:\java>java GoodWindowsExec Test.java

D:\java>java GoodWindowsExec regedit.exe

D:\java>java GoodWindowsExec NOTEPAD.EXE

D:\java>java GoodWindowsExec first.ppt

D:\java>java GoodWindowsExec second.doc

function TempSave(ElementID)

{

CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value);

CommentsPersistDiv.save("CommentXMLStore");

}

function Restore(ElementID)

{

CommentsPersistDiv.load("CommentXMLStore");

document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent");

}

④ 如何用java执行命令行

Java运行命令行并获取返回值,下面以简单的Java执行ping命令(ping 127.0.0.1 -t
)为例,代码如下:

Processp=Runtime.getRuntime().exec("ping127.0.0.1-t");
Processp=Runtime.getRuntime().exec("javac");
InputStreamis=p.getInputStream();
BufferedReaderreader=newBufferedReader(newInputStreamReader(is));
Stringline;
while((line=reader.readLine())!=null){
System.out.println(line);
}
p.waitFor();
is.close();
reader.close();
p.destroy();
}

⑤ java 调用windows 命令行程序遇到有空格的路径该怎么解决

比如: java Test a b Test程序会收到两个参数"a"和"b",如果想要让它收到"a b",命令行可以改成 java Test "a b" 如果你不能编辑java运行的命令行,又很肯定你的程序只应该接收1个参数

⑥ java调用CMD命令

String command = “cmd命令”

Process pro = Runtime.getRuntime().exec(command);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(pro.getInputStream()));

⑦ java程序里调用linux命令

1.Java调用shell

Java语言以其跨平台性和简易性而着称,在Java里面的lang包里(java.lang.Runtime)提供了一个允许Java程序与该程序所运
行的环境交互的接口,这就是Runtime类,在Runtime类里提供了获取当前运行环境的接口。
其中的exec函数返回一个执行shell命令的子进程。exec函数的具体实现形式有以下几种:
public Process exec(String command) throws IOException
public Process exec(String command,String[] envp) throws
IOException
public Process exec(String command,String[] envp,File dir) throws
IOException
public Process exec(String[] cmdarray) throws IOException
public Process exec(String[] cmdarray, String[] envp) throws
IOException
public Process exec(String[] cmdarray, String[] envp,File dir)
throws IOException

我们在这里主要用到的是第一个和第四个函数,具体方法很简单,就是在exec函数中传递一个代表命令的字符串。exec函数返回的是一个Process类
型的类的实例。Process类主要用来控制进程,获取进程信息等作用。(具体信息及其用法请参看Java doc)。

1)执行简单的命令的方法:

代码如下:

⑧ linux下java怎么调用两个命令行cd /home/adminter && mkdir

执行外部的命令,两个关键类,Runtime类和Process类,主要的方法,getRuntime().exex();

⑨ java如何从命令行输入和输出数据

import java.util.*;

import java.io.*;

import javax.swing.JOptionPane;

public class SysIn

{

public static void main(String [] args)

{

【java.util包中的Scanner类】

Scanner sc = new Scanner(System.in);

System.out.println("请输入第一串字符:");

String firStr = sc.next();

System.out.println("你输入的是" +firStr);

注意事项:next()读取一个字符串,该字符串在一个空白符之前结束

(9)java调用命令行扩展阅读

其他java从命令行输入和输出数据

1、【java.io包中的BufferedReader类】

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

System.out.println("请输入第二串字符:");

String secStr=null;

try

{

secStr=bf.readLine();

} catch (IOException e) {

e.printStackTrace();

}

System.out.println("你输入的是" + secStr);

注意事项:nextByte()读取一个byte类型整数--其他类型整数类推

2、【调用 javax.swing.JOptionPane 类】

String jop = JOptionPane.showInputDialog

(null,"Please Input:","InputDialog",JOptionPane,QUESTION_MESSAGE);

System.out.println("你输入的第三串字符:“ + jop);

}

}

注意事项:nextLine()读取一行文本

⑩ java中如何执行命令行语句

可以使用java.lang.Process和java.lang.Runtime实现,下面展示两个例子,其它用法请查阅资料:

1、执行ping命令:

importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;

publicclassProcessTest{
publicstaticvoidmain(String[]args){
BufferedReaderbr=null;
try{
Stringcmd="ping127.0.0.1";
//执行dos命令并获取输出结果
Processproc=Runtime.getRuntime().exec(cmd);
br=newBufferedReader(newInputStreamReader(proc.getInputStream(),"GBK"));

Stringline;
while((line=br.readLine())!=null){
System.out.println(line);
}
proc.waitFor();
}catch(IOExceptione){
e.printStackTrace();
}catch(InterruptedExceptione){
e.printStackTrace();
}finally{
if(br!=null){
try{
br.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
}
}

2、打开浏览器并跳转到网络首页:

importjava.io.IOException;

publicclassProcessTest{
publicstaticvoidmain(String[]args){
try{
StringexeFullPathName="C:/ProgramFiles/InternetExplorer/IEXPLORE.EXE";
Stringmessage="www..com";
String[]cmd={exeFullPathName,message};
Processproc=Runtime.getRuntime().exec(cmd);
}catch(IOExceptione){
e.printStackTrace();
}
}
}
热点内容
数控机床编程步骤 发布:2025-07-20 10:14:22 浏览:94
存储单位容量最小的是 发布:2025-07-20 10:14:11 浏览:767
爱情脚本短 发布:2025-07-20 09:56:44 浏览:681
存款机的安全密码是什么 发布:2025-07-20 09:53:03 浏览:33
手机如何清理空文件夹 发布:2025-07-20 09:40:35 浏览:73
什么软件可以编译文件 发布:2025-07-20 09:35:17 浏览:962
可编程控制器的定义 发布:2025-07-20 09:28:10 浏览:391
陌陌会员访问不留痕迹 发布:2025-07-20 09:28:08 浏览:309
x27热点密码是多少 发布:2025-07-20 09:03:19 浏览:577
c语言编码生日快乐 发布:2025-07-20 08:56:56 浏览:390