我编写了一个Java程序来打开一个导入到程序资源中的批处理文件。
即使在Eclipse中运行我的代码,批处理文件也不能工作。我已经使用打开了批处理文件,所以批处理文件可以工作。
该文件本质上是一个命令提示符,用于当它可能被组策略阻止时。
批处理文件的内容如下..。
@ECHO OFF
TITLE Command Prompt
VER | FIND /I " "
ECHO A portable CMD made with Batch.
ECHO.
CD /D %SYSTEMDRIVE% && CD %USERPROFILE%
:USER
SET /P INPUT="%CD%>"
%INPUT%
ECHO.
GOTO USER现在,当我执行以下代码时:
ClassLoader classLoad = this.getClass().getClassLoader();
URL batchPath = classLoad.getResource("cmd.bat");
String batch = batchPath.toString();
System.out.println("batchPath " + batchPath);
System.out.println("batch " + batch);
String batchCommand = batch.replaceFirst("file:/", "");
batchCommand = batchCommand.replace('/', '\\');
batchCommand = batchCommand.replaceAll("%20", " ");
System.out.println(batchCommand);
ProcessBuilder pb = new ProcessBuilder("\"" + batchCommand + "\"");
pb.redirectErrorStream(true);
try {
Process proc = pb.start();
} catch (Exception e) {
e.printStackTrace();
}..。它似乎在Process proc = pb.start()上抛出一个错误,这是可以理解的,真的。
如有任何答复,将不胜感激。
发布于 2015-05-12 10:37:24
https://stackoverflow.com/a/17120829/524743
数组中的第一个元素必须是可执行的。因此,您必须调用cmd.exe才能调用批处理文件。
ProcessBuilder builder = new ProcessBuilder(Arrays.asList(new String[] {"cmd.exe", "/C", "batchCommand"}));https://stackoverflow.com/questions/30187186
复制相似问题