3

我正在寻找能够以“批处理”方式运行 Windows 命令的 Java 应用程序;我的意思是它在命令之间是持久的,而不是好像你一次只执行一个。

这方面的一个例子可能是:

@echo off
pushd C:\foldertobepushedto\
call batchfiletobecalled.bat
popd
pushd anotherdirectorytobepushedinto
call anotherbatchfiletobecalled.bat
popd

我希望能够使用Process process = Runtime.getRuntime().exec(CMD);能够运行这些行中的每一行但保持持久性的方式,这样就不会好像每行都与其他行完全分开运行。

我希望我有点道理;我打算基本上一起删除批处理文件的使用,并将每一行作为一个元素存储在向量/数组中,并以这种方式执行“批处理”样式。

4

1 回答 1

1

打扰一下。我知道在 JScript 中解决这个问题的方法;如果有 Java 的等效方法,我会忽略。

如果您:

单独执行 CMD.EXE 文件,不带参数,但通过 WshShell.Exec 方法:

var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec("cmd");

WshShell.Exec 方法提供对进程标准 I/O 通道的访问。

之后,将要执行的命令发送到进程的 STDIN 通道:

oExec.Stdin.WriteLine("@echo off");
oExec.Stdin.WriteLine("pushd C:\foldertobepushedto\");
oExec.Stdin.WriteLine("call batchfiletobecalled.bat");
oExec.Stdin.WriteLine("popd");
oExec.Stdin.WriteLine("exit");

这样,所有命令将以完全等效的方式执行,就好像它们将包含在批处理文件中一样。唯一的区别是某些命令将无法正确执行,例如GOTO.

于 2013-06-01T05:10:06.143 回答