Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java运行.bat不会显示CMD_Java_Batch File_Runtime.exec - Fatal编程技术网

从Java运行.bat不会显示CMD

从Java运行.bat不会显示CMD,java,batch-file,runtime.exec,Java,Batch File,Runtime.exec,我正在尝试运行位于此处的.bat文件: C:\A\B\C\D E\F 因此,我援引: cmd /c "cd C:\A\B\C\D E\F && a.bat" 在CMD上,我可以看到文件的执行情况 现在我想从Java运行这个文件,然后删除它,所以我运行: Runtime.getRuntime().exec("cmd start /wait /c "+ "\"cd C:\\A\\B\\C\\D E\\F && a.bat\""); /wait,因为我只想在文件执行

我正在尝试运行位于此处的.bat文件:

C:\A\B\C\D E\F

因此,我援引:

cmd /c "cd C:\A\B\C\D E\F && a.bat"
在CMD上,我可以看到文件的执行情况

现在我想从Java运行这个文件,然后删除它,所以我运行:

Runtime.getRuntime().exec("cmd start /wait /c "+ "\"cd C:\\A\\B\\C\\D E\\F && a.bat\"");
/wait,因为我只想在文件执行后删除该文件


但是我看不到CMD没有打开的程序的执行情况。如何解决此问题?

我建议您使用以下命令:

Runtime run = Runtime.getRuntime();  
        Process process = null;  
        String cmd = "cmd start /wait /c "+ "\"cd C:\\A\\B\\C\\D E\\F && a.bat\"";  
        try {  
            process = run.exec(cmd);
            process.waitFor();
            System.out.println(process.exitValue());
        }  
        catch (IOException e) {  
            e.printStackTrace();  
            process.destroy();  
        } 
在一个单独的批处理文件中,说abc.bat。 然后使用以下行运行abc.bat文件:

我找到了一个解决方案:

我将start/wait移动到命令的第二部分,它起了作用:


Runtime.getRuntime.execcmd+\cd C:\\A\\B\\C\\D E\\F&&start/wait A.bat\

那有点乱。当然,您的第一个命令是从命令提示符运行的,但随后您尝试从java内部运行一个完全不同且功能不全的命令

我假设您要从java中删除a.bat,在这种情况下,START/WAIT对您没有任何好处。子进程将等待目标START to finish,但这对java进程没有影响

为什么不让子进程删除该文件?我相信以下方法会奏效

Runtime.getRuntime().exec("cmd /c \"cd C:\\A\\B\\C\\D E\\F&&a.bat&&del a.bat\"");

在批处理脚本完成之前,delete命令不会激发。如果要始终删除脚本,即使脚本失败,请将&&更改为&。

实际问题是什么?
Process process = Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "abc.bat");
process.waitFor();//throws InterruptedException . So it must be caught.
if (process.exitValue() == 0 )
{
 System.out.println("Process is executed successfully!");
}
Runtime.getRuntime().exec("cmd /c \"cd C:\\A\\B\\C\\D E\\F&&a.bat&&del a.bat\"");