我正在编写用于测试自动化的程序。该程序将从程序所在的文件夹中加载批处理文件的列表(名称)。然后我可以选择单个测试或全部测试并开始执行。每个批处理文件都连接到 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 命令行。有没有办法实现这个目标或者如果没有办法 - 我怎么能在我的程序中解析那个脚本文件(我宁愿远离这条路)。