java調用命令行
① 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();
}
}
}