'未被识别为内部或外部命令'从Java运行批处理

时间:2014-08-28 07:30:29

标签: java batch-file

我正在尝试运行这个'gzip.bat'。它的作用是压缩它所在目录中的所有文件。'gzip.exe'位于同一目录中。

@echo off
ren *.dat *.
gzip *.
pause

当我从Windows资源管理器运行它时,它运行得很好。

但是当我尝试从Java运行它时,我收到错误:

The system cannot find the file specified.
'gzip' is not recognized as an internal or external command,
operable program or batch file.
Press any key to continue . . .

这是我正在使用的Java代码:

        Runtime runtime = Runtime.getRuntime();
        try {
            Process p1 = runtime.exec("cmd /c start .\\data\\mapmaker\\gzipdir\\gzip.bat");

            InputStream is = p1.getInputStream();
            int i = 0;
            while( (i = is.read() ) != -1) {
                System.out.print((char)i);
            }
        } catch(IOException ioException) {
            System.out.println(ioException.getMessage() );
        }

我做错了什么?

1 个答案:

答案 0 :(得分:0)

指定批处理文件的名称时,假定错误的“当前”目录。它取决于如何开始申请。

如果从IDE运行,则很可能是项目文件夹。

如果从命令行运行Java应用程序,那么很明显(当前文件夹)。

将路径(.\\data\\mapmaker\\gzipdir\\gzip.bat)更改为绝对路径,它将起作用。或者从IDE启动时在IDE的运行配置中指定“工作目录”。

另请注意,不要在批量调用的另一个可执行文件(gzip.batgzip.exe)之后命名批处理文件。