gpt4 book ai didi

java - 将 .bat 文件中的值返回给调用应用程序

转载 作者:行者123 更新时间:2023-12-01 23:41:47 25 4
gpt4 key购买 nike

我使用以下代码来执行 .bat 文件并读取响应。

java.lang.ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "C:\\main.bat");
java.lang.Process p = pb.start();
String line;
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = r.readLine()) != null) {
System.out.println(line); <--this works
}
r.close();
}
}

main.bat 只会回显该值

call sample.bat c:\sample.txt value1
echo %value1% <---this works

但是现在我想从java代码传递一个参数,该参数将在批处理文件中设置并可以在java代码中打印。

java.lang.ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "C:\\main.bat" +s1);
java.lang.Process p = pb.start();
System.out.println(s1); <--- this does not work

有人可以告诉我如何将 .bat 文件中的值返回到任何调用应用程序吗?

最佳答案

请尝试以下代码

第 1 步:创建新类 CommandStreamReader

        import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
class CommandStreamReader extends Thread
{
InputStream is;
String type;

CommandStreamReader(InputStream is, String type)
{
this.is = is;
this.type = type;
}

public void run()
{
try
{
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line=null;
while ( (line = br.readLine()) != null)
System.out.println(type + ">" + line);
} catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}

第 2 步:使用您的内容在 C 目录中创建 main.bat 文件,例如

回声桑托什辛德

第 3 步:创建新类 CmdTest

        public class CmdTest { 
public static void main(String[] args) throws Exception {
try{
String[] cmd = new String[3];
cmd[0] = "cmd.exe" ;
cmd[1] = "/C" ;
cmd[2] = "C:/main.bat";
Runtime rt = Runtime.getRuntime();
System.out.println("Execing " + cmd[0] + " " + cmd[1] + " " + cmd[2]);
Process proc = rt.exec(cmd);
// any error message?
CommandStreamReader errorStream = new CommandStreamReader(proc.getErrorStream(), "ERROR");

// any output? Here We take return or output value from bach file
CommandStreamReader outputStream = new CommandStreamReader(proc.getInputStream(), "OUTPUT");

// kick them off
errorStream.start();
outputStream.start();

// any error???
int exitVal = proc.waitFor();
System.out.println("ExitValue: " + exitVal);

} catch(Throwable t){
t.printStackTrace();
}
}

}
}

第 4 步:输出

  Execing cmd.exe /C F:/main.bat
OUTPUT>
OUTPUT>C:\Users\Admin\workspace\BuilAPKAnt>echo santosh
OUTPUT>santosh shinde
ExitValue: 0

关于java - 将 .bat 文件中的值返回给调用应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17796210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com