不使用 ProcessBuilder 从 java 程序启动 bat 文件

问题描述 投票:0回答:0

我正在编写用于测试自动化的程序。该程序将从程序所在的文件夹中加载批处理文件的列表(名称)。然后我可以选择单个测试或全部测试并开始执行。每个批处理文件都连接到 oracle,进行一些更新等等,然后将选定的输出假脱机到 csv 文件,并将输出文件放置到本地驱动器。

我编写了一个程序,使用 ProcessBuilder 将批处理文件加载到 java 程序中,但是当我尝试执行批处理文件时,它无法从 bat 文件打开 sql 脚本。

ProcessBuilder pb = new ProcessBuilder(System.getProperty("user.dir")+"//src//test.bat");
                 try {
                    pb.start();
                    
                    
                    Process process = pb.start();
                    
                    BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                    
                    StringBuilder sb = new StringBuilder();
                    
                    String line;
                    
                    while ((line = reader.readLine()) != null) {
                            sb.append(line + "\n");
                    }
                    
                    System.out.println(sb);

bat文件(非常简单的版本):

@echo ON
set /A var = 100000000
sqlplus -s login/password@server @script.sql %var%
type results_*.csv > "results.csv"
del results_*.csv

当我调试时,整个过程都无法打开 sql 脚本。

SP2-0310: can't open file "script.sql"

但我不想在我的程序中打开和执行 bat 文件。我希望我的 java 程序启动将执行我的 bat 文件的 Windows 命令行。有没有办法实现这个目标或者如果没有办法 - 我怎么能在我的程序中解析那个脚本文件(我宁愿远离这条路)。

java batch-file cmd
© www.soinside.com 2019 - 2024. All rights reserved.