Java实现运行dos命令
- 格式:doc
- 大小:64.50 KB
- 文档页数:3
java执⾏windows下cmd命令的⽅法本⽂实例讲述了java执⾏windows下cmd命令的⽅法。
分享给⼤家供⼤家参考。
具体实现代码如下:复制代码代码如下://获取运⾏时Runtime rt = Runtime.getRuntime();//获取进程Process p = rt.exec(String[] cmdarray);//或者 Process p = rt.exec(String cmd);//如果p不为空,那么要清空if(null!=p){destory p.destory(); p=null;}例如:复制代码代码如下:Runtime rt = Runtime.getRuntime();Process p = rt.exec("cmd.exe /c shutdown -a");System.out.println(p.toString());cmd /c dir 是执⾏完dir命令后关闭命令窗⼝。
cmd /k dir 是执⾏完dir命令后不关闭命令窗⼝。
cmd /c start dir 会打开⼀个新窗⼝后执⾏dir指令,原窗⼝会关闭。
cmd /k start dir 会打开⼀个新窗⼝后执⾏dir指令,原窗⼝不会关闭。
可以⽤cmd /?查看帮助信息。
补充:★CMD命令★1. gpedit.msc-----组策略2. sndrec32-------录⾳机3. Nslookup-------IP地址侦测器4. explorer-------打开资源管理器5. logoff---------注销命令6. tsshutdn-------60秒倒计时关机命令7. lusrmgr.msc----本机⽤户和组8. services.msc---本地服务设置9. oobe/msoobe /a----检查XP是否激活10. notepad--------打开记事本11. cleanmgr-------垃圾整理12. net start messenger----开始信使服务13. compmgmt.msc---计算机管理14. net stop messenger-----停⽌信使服务15. conf-----------启动netmeeting16. dvdplay--------DVD播放器17. charmap--------启动字符映射表18. diskmgmt.msc---磁盘管理实⽤程序19. calc-----------启动计算器20. dfrg.msc-------磁盘碎⽚整理程序21. chkdsk.exe-----Chkdsk磁盘检查22. devmgmt.msc--- 设备管理器23. regsvr32 /u *.dll----停⽌dll⽂件运⾏24. drwtsn32------ 系统医⽣25. rononce -p ----15秒关机26. dxdiag---------检查DirectX信息27. regedt32-------注册表编辑器28. Msconfig.exe---系统配置实⽤程序29. rsop.msc-------组策略结果集30. mem.exe--------显⽰内存使⽤情况31. regedit.exe----注册表32. winchat--------XP⾃带局域⽹聊天33. progman--------程序管理器34. winmsd---------系统信息35. perfmon.msc----计算机性能监测程序36. winver---------检查Windows版本37. sfc /scannow-----扫描错误并复原38. taskmgr-----任务管理器(2000/xp/200339. winver---------检查Windows版本40. wmimgmt.msc----打开windows管理体系结构(WMI)41. wupdmgr--------windows更新程序42. wscript--------windows脚本宿主设置43. write----------写字板44. winmsd---------系统信息45. wiaacmgr-------扫描仪和照相机向导46. winchat--------XP⾃带局域⽹聊天47. mem.exe--------显⽰内存使⽤情况48. Msconfig.exe---系统配置实⽤程序49. mplayer2-------简易widnows media player50. mspaint--------画图板51. mstsc----------远程桌⾯连接52. mplayer2-------媒体播放机53. magnify--------放⼤镜实⽤程序54. mmc------------打开控制台55. mobsync--------同步命令56. dxdiag---------检查DirectX信息57. drwtsn32------ 系统医⽣58. devmgmt.msc--- 设备管理器59. dfrg.msc-------磁盘碎⽚整理程序60. diskmgmt.msc---磁盘管理实⽤程序61. dcomcnfg-------打开系统组件服务62. ddeshare-------打开DDE共享设置63. dvdplay--------DVD播放器64. net stop messenger-----停⽌信使服务65. net start messenger----开始信使服务66. notepad--------打开记事本67. nslookup-------⽹络管理的⼯具向导68. ntbackup-------系统备份和还原69. narrator-------屏幕“讲述⼈”70. ntmsmgr.msc----移动存储管理器71. ntmsoprq.msc---移动存储管理员操作请求72. netstat -an----(TC)命令检查接⼝73. syncapp--------创建⼀个公⽂包74. sysedit--------系统配置编辑器75. sigverif-------⽂件签名验证程序76. sndrec32-------录⾳机77. shrpubw--------创建共享⽂件夹78. secpol.msc-----本地安全策略79. syskey---------系统加密,⼀旦加密就不能解开,保护windows xp系统的双重密码80. services.msc---本地服务设置81. Sndvol32-------⾳量控制程序82. sfc.exe--------系统⽂件检查器83. sfc /scannow---windows⽂件保护84. tsshutdn-------60秒倒计时关机命令85. tourstart------xp简介(安装完成后出现的漫游xp程序)86. taskmgr--------任务管理器87. eventvwr-------事件查看器88. eudcedit-------造字程序89. explorer-------打开资源管理器90. packager-------对象包装程序91. perfmon.msc----计算机性能监测程序92. progman--------程序管理器93. regedit.exe----注册表94. rsop.msc-------组策略结果集95. regedt32-------注册表编辑器96. rononce -p ----15秒关机97. regsvr32 /u *.dll----停⽌dll⽂件运⾏98. regsvr32 /u zipfldr.dll------取消ZIP⽀持99. cmd.exe--------CMD命令提⽰符100. chkdsk.exe-----Chkdsk磁盘检查101. certmgr.msc----证书管理实⽤程序102. calc-----------启动计算器103. charmap--------启动字符映射表104. cliconfg-------SQL SERVER 客户端⽹络实⽤程序105. Clipbrd--------剪贴板查看器106. conf-----------启动netmeeting107. compmgmt.msc---计算机管理108. cleanmgr-------垃圾整理109. ciadv.msc------索引服务程序110. osk------------打开屏幕键盘111. odbcad32-------ODBC数据源管理器112. oobe/msoobe /a----检查XP是否激活113. lusrmgr.msc----本机⽤户和组114. logoff---------注销命令115. iexpress-------⽊马捆绑⼯具,系统⾃带116. Nslookup-------IP地址侦测器117. fsmgmt.msc-----共享⽂件夹管理器118. utilman--------辅助⼯具管理器119. gpedit.msc-----组策略120. explorer-------打开资源管理器javac 其实执⾏了只是没有输出执⾏结果因为你没有输出执⾏结果的部分如果你执⾏复制代码代码如下:Runtime.getRuntime.exec("cmd");也看不到结果因为它不是在java程序中执⾏的⽽是在操作系统上执⾏的你可以这样复制代码代码如下:Runtime.getRuntime.exec("cmd /c start javac ");就可以看到⼀个命令⾏窗。
Java调⽤本地命令参考:⼀、Process类ProcessBuilder.start()创建⼀个本机进程,并返回⼀个Process⼦类的⼀个实例,该实例可以获取进程的相关信息,也可以控制进程。
这个进程没有⾃⼰的终端,它的操作结果io都重定向到了它的⽗进程,⽗进程通过getInputStream(),getOutputStream(),getErrorStream()为⼦进程提供输⼊和获取输出,⽽对于io流如果有缓冲⼤⼩限制,则可能出现阻塞,导致死锁情况。
可使⽤destory()⽅式强制杀掉⼦进程,exitValue()返回执⾏结果,如果⼦进程需要等待返回,调⽤waitFor()⽅法将当前线程等待,直到⼦进程退出。
⼆、Runtime类Runtime.getRuntime().exec() 获得的就是Process类,exec()⽅法有多个重载可以使⽤,针对不同的情况设置不同的参数。
另外需要注意的是执⾏的windows和linux的明林的写法是不同的。
public static void main(String[] args) {String command = "notepad.exe txt.txt";try {Process process = Runtime.getRuntime().exec(command);BufferedInputStream bis = new BufferedInputStream(process.getInputStream());BufferedReader br = new BufferedReader(new InputStreamReader(bis));String line;while ((line = br.readLine()) != null) {System.out.println(line);}process.waitFor();if (process.exitValue() != 0) {System.out.println("error!");}bis.close();br.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}三、Apache Common-Exec强烈建议使⽤apache的第三⽅库,该库提供了更加详细的设置和监控⽅法等等。
java打开本地应⽤程序(调⽤cmd)---Runtime⽤法详解 有时候我们需要借助java程序打开电脑⾃带的⼀些程序,可以直接打开或者借助cmd命令窗⼝打开⼀些常⽤的应⽤程序或者脚本,在cmd窗⼝执⾏的命令都可以通过这种⽅式运⾏。
例如:package cn.xm.exam.test;import java.io.IOException;import org.junit.Test;public class TestCmd {@Testpublic void test1() throws IOException {// 直接打开应⽤程序Runtime.getRuntime().exec("C:/Users/liqiang/Desktop/开机后点它.bat"); // 打开⼀个批处理⽂件Runtime.getRuntime().exec("E:/酷狗/KGMusic/KuGou.exe"); // 打开酷狗/******** 可以通过cmd命令打开软件或者是做其他 *****/Runtime.getRuntime().exec("C:/Windows/System32/cmd.exe /k start E:/酷狗/KGMusic/KuGou.exe"); // 通过cmd窗⼝执⾏命令Runtime.getRuntime().exec("C:/Windows/System32/cmd.exe /k start E:/php/Test/第⼀个html/界⾯.html"); // 通过cmd命令打开⼀个⽹页Runtime.getRuntime().exec("C:/Windows/System32/cmd.exe /k mkdir C:\\Users\\liqiang\\Desktop\\java键的1"); // 通过cmd创建⽬录⽤两个反斜杠Runtime.getRuntime().exec("C:/Windows/System32/cmd.exe /k mkdir C:\\Users\\liqiang\\Desktop\\java键的2"); // 通过cmd创建⽬录⽤两个反斜杠Runtime.getRuntime().exec("C:/Windows/System32/cmd.exe /c calc ");// 通过cmd打开计算器}@Testpublic void test2() throws IOException {/******** 可以通过cmd命令打开软件或者是做其他 *****/Runtime.getRuntime().exec("C:/Windows/System32/cmd.exe /c osk");// 通过屏幕软键盘}}另外也可以获取⼀些其他的JVM参数:long totalMemory = Runtime.getRuntime().totalMemory();//总内存long freeMemory = Runtime.getRuntime().freeMemory();//剩余内存long maxMemory = Runtime.getRuntime().maxMemory();//最⼤内存System.out.println(totalMemory/1024/1024+"MB");System.out.println(freeMemory/1024/1024+"MB");System.out.println(maxMemory/1024/1024+"MB");也可以直接执⾏⼀些命令:Runtime.getRuntime().exec("calc");//打开计算器补充:上⾯的⽅式都是异步运⾏的⽅式,也就是在执⾏命令之后会不等exec执⾏完就执⾏下⼀条语句,为了实现同步结果,或者为了获取返回的结果,参考:import java.io.IOException;import java.io.InputStream;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public final class Test {private static final Logger logger = LoggerFactory.getLogger(Test.class);public static void main(String[] args) throws NullPointerException {long start = System.currentTimeMillis();String srcPath = "C:/Users/liqiang/Desktop/ww/tt.docx", desPath = "C:/Users/liqiang/Desktop/ww";String command = "";String osName = System.getProperty("");if (osName.contains("Windows")) {command = "soffice --headless --convert-to pdf " + srcPath + " --outdir " + desPath;exec(command);}long end = System.currentTimeMillis();logger.debug("⽤时:{} ms", end - start);}public static boolean exec(String command) {Process process;// Process可以控制该⼦进程的执⾏或获取该⼦进程的信息try {logger.debug("exec cmd : {}", command);process = Runtime.getRuntime().exec(command);// exec()⽅法指⽰Java虚拟机创建⼀个⼦进程执⾏指定的可执⾏程序,并返回与该⼦进程对应的Process对象实例。
dos命令大全及用法DOS命令大全及用法。
DOS(Disk Operating System)是早期微软公司的操作系统,它的命令行界面让用户可以通过输入命令来操作计算机。
虽然现在的Windows操作系统已经不再使用DOS,但是DOS命令仍然有一定的实用价值,尤其是在一些特定的场景下。
本文将介绍一些常用的DOS命令及其用法,希望对大家有所帮助。
1. dir。
dir命令用于列出当前目录下的文件和子目录。
在命令行中输入dir后,按下回车键,系统将会列出当前目录下的所有文件和子目录的名称、大小和修改日期。
2. cd。
cd命令用于改变当前目录。
比如,要进入D盘下的test目录,可以在命令行中输入cd d:\test,然后按下回车键,系统就会切换到D盘下的test目录。
3. copy。
copy命令用于复制文件。
比如,要将C盘下的test.txt文件复制到D盘下,可以在命令行中输入copy c:\test.txt d:\,然后按下回车键,系统就会将test.txt文件复制到D盘下。
4. del。
del命令用于删除文件。
在命令行中输入del后,再输入要删除的文件名,按下回车键,系统就会删除该文件。
5. md。
md命令用于创建新的目录。
比如,要在E盘下创建一个名为test的目录,可以在命令行中输入md e:\test,然后按下回车键,系统就会在E盘下创建一个名为test的目录。
6. rd。
rd命令用于删除目录。
在命令行中输入rd后,再输入要删除的目录名,按下回车键,系统就会删除该目录。
7. ren。
ren命令用于重命名文件或目录。
比如,要将F盘下的test.txt文件重命名为new.txt,可以在命令行中输入ren f:\test.txt new.txt,然后按下回车键,系统就会将test.txt文件重命名为new.txt。
8. type。
type命令用于查看文本文件的内容。
在命令行中输入type后,再输入要查看的文本文件名,按下回车键,系统就会显示该文本文件的内容。
JAVA中如何执行DOS命令JAVA中如何执行DOS命令如果要执行一条DOS内部命令,有两种方法。
一种方法是把命令解释器包含在exec()的参数中。
另一种方法是,把内部命令放在一个批命令my_dir.bat文件中,在Java程序中写成exec("my_dir.bat")。
下面是店铺为大家带来的关于JAVA中如何执行DOS命令的知识,欢迎阅读。
JAVA中如何执行DOS命令下面是一种比较典型的程序模式:Process process = Runtime.getRuntime().exec(".p.exe");process.waitfor( );在上面的程序中,第一行的“.p.exe”是要执行的程序名,Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。
通过Process可以控制该子进程的执行或获取该子进程的信息。
第二条语句的目的等待子进程完成再往下执行。
但在windows平台上,如果处理不当,有时并不能得到预期的结果。
下面是笔者在实际编程中总结的几种需要注意的情况:1、执行DOS的内部命令如果要执行一条DOS内部命令,有两种方法。
一种方法是把命令解释器包含在exec()的参数中。
例如,执行dir命令,在NT上,可写成exec("cmd.exe /c dir"),在windows 95/98下,可写成“command.exe /c dir”,其中参数“/c”表示命令执行后关闭Dos 立即关闭窗口。
另一种方法是,把内部命令放在一个批命令my_dir.bat文件中,在Java程序中写成exec("my_dir.bat")。
如果仅仅写成exec("dir"),Java虚拟机则会报运行时错误。
实验一熟悉运行环境一、实验目的二、实验过程1、Java对我们来说,是一门新的编程语言。
它也有自己的运行环境和编程软件。
因此,第一节实习课,我们先要熟悉Java的运行环境之一——在DOS命令行下运行程序;2、虽然Java对我们来说是一门新的编程语言,但是还是和C或者C++有相同的地方。
在学习当中,我们首先接触的第一个程序还是就简单的的“Hello World!”;3、要是在DOS命令行下运行Java程序,我们首先应当在记事本中写上程序的源代码,并将本源代码以.java形式存放在文件夹中;4、将本代码以.java的形式存放后,我们就可以将本代码在DOS 环境下运行。
首先,应指明代码所保存的路径(e:);打开所存放的文件夹Java(cd Java);对Hello.java文件进行编译(javac Hello.java);待编译正确后,运行本文件(java Hello);5、上面这个就是我们最简单Java程序在DOS环境下的编写源代码、调试、编译和运行的全过程;6、我们进一步对在DOS环境下运行程序的方法进行实践。
在简单程序的基础上,给程序加上一个包。
建立一个记事本,写上源代码并保存成.java文件;7、首先与前面的一样,要将文件现在文件夹中保存好,然后再运行。
应指明代码所保存的路径(e:);打开所存放的文件夹Java和Test(cd Java和cd Test);对Test.java文件进行编译,编译过程中要在相应文件夹中产生新的文件夹cn(javac -d . *.java);运行主类Example (java .Example),产生运行结果;8、以上就是我们在第一节实习课中,在熟悉环境的同时所运行的程序。
三、实验心得在本节实习课的学习中,我们熟悉了怎样在DOS命令行中运行带包的程序和不带包的程序;并且,学会了一些故障的处理方式并熟悉了DOS命令行中实现的方式。
Java如何调用可执行文件和批处理命令●篇一Java 是种跨平台的语言,我们经常碰到需要通过Java调用windows下某些程序。
有些第三方厂商如(ANT),也提供了调用windows下可执行程序的方法,但我们往往需要调用一些批处理命令。
而java 却不提供。
这里,我采用一种变相的调用方法,使得Java 能调用批处理命令。
如果您有更好的方法,希望您能告诉我。
前期准备[/B]Quick Batch File (De)Compiler将任何BAT、CMD批处理脚本编译为EXE文件!开始1.运行exe 文件Java JDK里已经提供了调用的方法,不在累赘,代码如下。
try {String command = "notepad";Process child = Runtime.getRuntime().exec(command);} catch (IOException e) {}2.运行bat(批处理)文件Java 对批处理文件还不支持。
刚开始一直在研究Java 如何调用批处理文件,始终找不到解决方法。
后来只好绕过批处理,考虑如何将批处理转换为exe可执行文件。
然后再通过Java调用可执行文件。
在Google上搜索一下,找到Quick Batch File (De)Compiler,可以将任何BAT、CMD批处理脚本编译为EXE文件。
使用了一下,果然可以。
Quick Batch File (De)Compiler使用非常简单:Quickbfc 文件名.bat 文件名.exe(将批处理命令编译为可执行文件)quickbfd 文件名.exe 文件名.bat(将可执行文件反编译为批处理命令)然后,我们再按第一种方法通过Java 调用,即可。
●篇二由于java 是跨平台的,有时候我们需要用到操作系统的一些信息,为了方便期间,干脆就直接调用操作系统的命令来实现,比如查看IP地址,MAC地址等。
java如何连续执⾏多条cmd命令java连续执⾏多条cmd命令命令之间⽤&连接例如:Process p = Runtime.getRuntime().exec("cmd /c d: & cd bin/");java ssh登录执⾏多条cmd命令java登录ssh执⾏多条命令,解决出现more⾃动回车的问题import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import com.jcraft.jsch.Channel;import com.jcraft.jsch.JSch;import com.jcraft.jsch.JSchException;import com.jcraft.jsch.Session;import com.jcraft.jsch.UIKeyboardInteractive;import erInfo;public class JavaSsh implements Runnable {protected Logger logger = LogManager.getLogger();/*** 退格*/private static final String BACKSPACE = new String(new byte[] { 8 });/*** ESC*/private static final String ESC = new String(new byte[] { 27 });/*** 空格*/private static final String BLANKSPACE = new String(new byte[] { 32 });/*** 回车*/private static final String ENTER = new String(new byte[] { 13 });/*** 某些设备回显数据中的控制字符*/private static final String[] PREFIX_STRS = { BACKSPACE + "+" + BLANKSPACE + "+" + BACKSPACE + "+", "(" + ESC + "\\[\\d+[A-Z]" + BLANKSPACE + "*)+" };private int sleepTime = 200;/*** 连接超时(单次命令总耗时)*/private int timeout = 4000;/*** 保存当前命令的回显信息*/protected StringBuffer currEcho;/*** 保存所有的回显信息*/protected StringBuffer totalEcho;private String ip;private int port;private String endEcho = "#,?,>,:";private String moreEcho = "---- More ----";private String moreCmd = BLANKSPACE;private JSch jsch = null;private Session session;private Channel channel;@Overridepublic void run() {InputStream is;try {is = channel.getInputStream();String echo = readOneEcho(is);while (echo != null) {currEcho.append(echo);String[] lineStr = echo.split("\\n");if (lineStr != null && lineStr.length > 0) {String lastLineStr = lineStr[lineStr.length - 1];if (lastLineStr != null && lastLineStr.indexOf(moreEcho) > 0) {totalEcho.append(echo.replace(lastLineStr, ""));} else {totalEcho.append(echo);}}echo = readOneEcho(is);}} catch (IOException e) {e.printStackTrace();}}protected String readOneEcho(InputStream instr) {byte[] buff = new byte[1024];int ret_read = 0;try {ret_read = instr.read(buff);} catch (IOException e) {return null;}if (ret_read > 0) {String result = new String(buff, 0, ret_read);for (String PREFIX_STR : PREFIX_STRS) {result = result.replaceFirst(PREFIX_STR, "");}try {return new String(result.getBytes(), "GBK");} catch (UnsupportedEncodingException e) {e.printStackTrace();return null;}} else {return null;}}public JavaSsh(String ip, int port, String endEcho, String moreEcho) { this.ip = ip;this.port = port;if (endEcho != null) {this.endEcho = endEcho;}if (moreEcho != null) {this.moreEcho = moreEcho;}totalEcho = new StringBuffer();currEcho = new StringBuffer();}private void close() {if (session != null) {session.disconnect();}if (channel != null) {channel.disconnect();}private boolean login(String[] cmds) {String user = cmds[0];String passWord = cmds[1];jsch = new JSch();try {session = jsch.getSession(user, this.ip, this.port);session.setPassword(passWord);UserInfo ui = new SSHUserInfo() {public void showMessage(String message) {}public boolean promptYesNo(String message) {return true;}};session.setUserInfo(ui);session.connect(30000);channel = session.openChannel("shell");channel.connect(3000);new Thread(this).start();try {Thread.sleep(sleepTime);} catch (Exception e) {}return true;} catch (JSchException e) {return false;}}protected void sendCommand(String command, boolean sendEnter) { try {OutputStream os = channel.getOutputStream();os.write(command.getBytes());os.flush();if (sendEnter) {currEcho = new StringBuffer();os.write(ENTER.getBytes());os.flush();}} catch (IOException e) {e.printStackTrace();}}protected boolean containsEchoEnd(String echo) {boolean contains = false;if (endEcho == null || endEcho.trim().equals("")) {return contains;}String[] eds = endEcho.split(",");for (String ed : eds) {if (echo.trim().endsWith(ed)) {contains = true;break;}}return contains;}private String runCommand(String command, boolean ifEnter) {currEcho = new StringBuffer();sendCommand(command, ifEnter);int time = 0;if (endEcho == null || endEcho.equals("")) {while (currEcho.toString().equals("")) {try {Thread.sleep(sleepTime);time += sleepTime;if (time >= timeout) {break;}} catch (InterruptedException e) {e.printStackTrace();} else {while (!containsEchoEnd(currEcho.toString())) {try {Thread.sleep(sleepTime);} catch (InterruptedException e) {e.printStackTrace();}time += sleepTime;if (time >= timeout) {break;}String[] lineStrs = currEcho.toString().split("\\n");if (lineStrs != null && lineStrs.length > 0) {if (moreEcho != null && lineStrs[lineStrs.length - 1] != null&& lineStrs[lineStrs.length - 1].contains(moreEcho)) {sendCommand(moreCmd, false);currEcho.append("\n");time = 0;continue;}}}}return currEcho.toString();}private String batchCommand(String[] cmds, int[] othernEenterCmds) {StringBuffer sb = new StringBuffer();for (int i = 2; i < cmds.length; i++) {String cmd = cmds[i];if (cmd.equals("")) {continue;}boolean ifInputEnter = false;if (othernEenterCmds != null) {for (int c : othernEenterCmds) {if (c == i) {ifInputEnter = true;break;}}}cmd += (char) 10;String resultEcho = runCommand(cmd, ifInputEnter);sb.append(resultEcho);}close();return totalEcho.toString();}public String executive(String[] cmds, int[] othernEenterCmds) {if (cmds == null || cmds.length < 3) {logger.error("{} ssh cmds is null", this.ip);return null;}if (login(cmds)) {return batchCommand(cmds, othernEenterCmds);}logger.error("{} ssh login error", this.ip);return null;}private abstract class SSHUserInfo implements UserInfo, UIKeyboardInteractive { public String getPassword() {return null;}public boolean promptYesNo(String str) {return true;}public String getPassphrase() {return null;}public boolean promptPassphrase(String message) {return true;}public boolean promptPassword(String message) {return true;}public void showMessage(String message) {}public String[] promptKeyboardInteractive(String destination, String name, String instruction, String[] prompt, boolean[] echo) {return null;}}public static void main(String[] args) {String ip = "192.168.0.238";int port = 22;JavaSsh JavaSsh2 = new JavaSsh(ip, port, null, null);String username = "ssh";String password = "";String[] cmds = { username, password, "display mac-address", "display mac-address" };String executive = JavaSsh2.executive(cmds, null);System.out.println(executive);}}以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
JAVA程序命令行下的执行在Java中,可以使用命令行来执行程序。
命令行执行Java程序的主要步骤包括编写代码、编译代码、运行程序。
第一步:编写代码```javapublic class HelloWorldpublic static void main(String[] args)System.out.println("Hello, World!");}```上面的代码定义了一个名为 "HelloWorld" 的公共类,并在该类中定义了一个名为 "main" 的公共静态方法。
该方法打印输出 "Hello, World!"。
第二步:编译代码接下来,你需要使用Java编译器(javac)将Java源代码(.java 文件)编译成Java字节码(.class文件)。
打开命令行终端,并定位到存储你的Java程序源代码文件的目录。
运行以下命令来编译Java程序:```javac HelloWorld.java```这个命令将调用Java编译器来编译 "HelloWorld.java" 文件。
如果编译成功,会在同一目录下生成一个名为 "HelloWorld.class" 的字节码文件。
第三步:运行程序编译成功后,你可以使用Java虚拟机(JVM)来运行编译后的字节码文件。
在命令行中,运行以下命令:```java HelloWorld```这将运行Java虚拟机,并执行名为 "HelloWorld" 的类中的 "main" 方法。
输出应为 "Hello, World!"。
如果你的程序需要命令行参数,你可以在运行Java命令时提供它们。
例如,你可以运行以下命令:```java HelloWorld arg1 arg2```这将在运行 "HelloWorld" 类的 "main" 方法时将 "arg1" 和"arg2" 作为参数传递给程序。
Java打印当前局域网中链接的主机信息
public class Test2 {
public static void main(String[] args) throws IOException { String[] cmd = new String[3];
cmd[0] = "cmd.exe";
cmd[1] = "/c";
cmd[2] = "arp -a";
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(cmd);
InputStream isInputStreamReader= proc.getInputStream();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(isInputStreamReader));
String length=null;
int i=0;
while((length=bufferedReader.readLine())!=null)
{
System.out.println(length);
i++;
}
}
}
Process exec(String command)
在单独的进程中执行指定的字符串命令。
Process exec(String[] cmdarray)
在单独的进程中执行指定命令和变量。
Process exec(String[] cmdarray, String[] envp)
在指定环境的独立进程中执行指定命令和变量。
Process exec(String[] cmdarray, String[] envp, File dir)
在指定环境和工作目录的独立进程中执行指定的命令和变量。
Process exec(String command, String[] envp)
在指定环境的单独进程中执行指定的字符串命令。
Process exec(String command, String[] envp, File dir)
在有指定环境和工作目录的独立进程中执行指定的字符串命令。
abstract In putStream getErrorStream()
获取子进程的错误流。
abstract In putStream getInputStream()
获取子进程的输入流。
abstract Ou tputStream getOutputStream()
获取子进程的输出流。
本实例简单用java实现了win7下的cmd.exe中的命令的输出。
public class Test2 {
public static void main(String[] args) throws IOException { String[] cmd = new String[3];
cmd[0] = "cmd.exe";
cmd[1] = "/c";
while(true)
{
System.out.println("输入你要运行的dos命令");
//对于简单的一个命令可以使用Scanner来接收用户的输入但是对于有参数的命令就不能使用它。
而是使用流来操作
// Scanner scanner=new Scanner(System.in);
//使用流来操作避免用户输入用参数的命令
InputStreamReader IS=new InputStreamReader(System.in);
BufferedReader BR=new BufferedReader(IS);
cmd[2]=BR.readLine();
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(cmd);
InputStream isInputStreamReader= proc.getInputStream();
new Thread1(isInputStreamReader).start();
//线程让出资源
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Thread1 extends Thread
{
private InputStream is;
public Thread1(InputStream is) {
this.is=is;
}
public void run()
{
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String Length=null;
try {
while((Length=br.readLine())!=null)
{
System.out.println(Length);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
用户可以输入dos命令带参数的命令。