代码中执行命令行-Python与Java版

这里的命令是指在开始-->运行里输的命令,如:ping www.baidu.com

要运行dos命令,如dir,直接在开始-->运行里执行会报错,此时需要调用cmd来执行dir,完整命令为:cmd /k dir

参数说明:

/k 表示执行完命令后不关闭cmd窗口
/c 表示执行完命令后关闭cmd窗口
/k或/c后还可以加一个start,表示在新的cmd窗口中执行后面的命令


一、不需要后续输入

以如下命令为例:

echo %path% 

这是CMD下输出path环境变量的命令,以下代码都可以在Sublime Text控制台中输出结果:


Python代码:
import subprocess
r = subprocess.call(['cmd', '/k', 'echo',  '%path%'])

或者:

import os
s = os.system("echo %path%")


Java代码(略去try catch):
Process p = Runtime.getRuntime().exec("cmd /k echo %path%");
// 数据从进程流向本程序,从本程序的角度,是输入流
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String buff = null;
while((buff = br.readLine()) != null){
    System.out.println(buff);
}
br.close();   

二、需要后续输入

以如下命令为例:
adb shell
adb help
exit
第一行是进入adb shell,第二行是输出帮助信息,第三行是退出shell。这些命令需要你的电脑已经安装Android adb工具,同时连上手机或者启动了Android 虚拟机。

Python代码:
import subprocess
p = subprocess.Popen(['adb', 'shell'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = p.communicate(b'adb help\nexit\n')
print(output.decode('utf-8'))


Java代码(略去try catch):

Process process = Runtime.getRuntime().exec("adb shell");  
DataOutputStream os = new DataOutputStream(process.getOutputStream()); 
os.write("adb help\nexit\n".getBytes());  
os.flush();  

int result = process.waitFor();  

StringBuilder successMsg = new StringBuilder();  
StringBuilder errorMsg = new StringBuilder();  
BufferedReader successResult = new BufferedReader(new InputStreamReader(process.getInputStream()));  
BufferedReader errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream())); 

String s;  
while ((s = successResult.readLine()) != null) {  
    successMsg.append(s);  
}  
while ((s = errorResult.readLine()) != null) {  
    errorMsg.append(s);  
}  

os.close(); 
successResult.close(); 
errorResult.close();  
process.destroy();  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值