package com.dy.revise.cmd;
import lombok.extern.slf4j.Slf4j;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author 刘德意
* @date 2023/11/29 9:58
*/
@Slf4j
public class CmdLearning {
public static void main(String[] args) {
File file = new File("D:\\tmp\\test\\66.txt");
System.out.println("文件大小: " + file.length());
// 指定Git Bash路径,注意替换为你的实际路径
String gitBashPath = "C:\\Program Files\\Git\\bin\\bash.exe";
List<String> cmds = new ArrayList<>();
cmds.add("cd /d/tmp/test/");
cmds.add("[ -e 99.txt ] && echo 1 || echo 2");
cmds.add("stat -c %s 66.txt");
executeCMD(cmds);
}
public static String executeCMD(List<String> commands) {
String command = handlerCMD(commands);
String gitBashPath = "C:\\Program Files\\Git\\bin\\bash.exe";
ProcessBuilder processBuilder = new ProcessBuilder(gitBashPath, "-c", command);
processBuilder.redirectErrorStream(true);
try {
Process process = processBuilder.start();
String result = new BufferedReader(new InputStreamReader(process.getInputStream())).lines().collect(Collectors.joining(System.lineSeparator()));
log.info("执行CMD返回的结果:{}", result);
process.waitFor();
return result;
} catch (IOException | InterruptedException e) {
e.printStackTrace();
log.error("执行命令行出错:{}", e.toString());
return null;
}
}
/**
* 处理命令行
*
* @param commands 使用 &&符号拼接多个命令行
* @return 处理后的命令行
*/
private static String handlerCMD(List<String> commands) {
StringBuilder command = new StringBuilder();
for (int i = 0; i < commands.size(); i++) {
command.append(commands.get(i));
if (i != commands.size() - 1) {
command.append(" && ");
}
}
return command.toString();
}
}
使用Java调用bash.exe,执行命令行操作
最新推荐文章于 2024-05-20 20:11:48 发布