我正在尝试运行这个'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() );
}
我做错了什么?
答案 0 :(得分:0)
指定批处理文件的名称时,假定错误的“当前”目录。它取决于如何开始申请。
如果从IDE运行,则很可能是项目文件夹。
如果从命令行运行Java应用程序,那么很明显(当前文件夹)。
将路径(.\\data\\mapmaker\\gzipdir\\gzip.bat
)更改为绝对路径,它将起作用。或者从IDE启动时在IDE的运行配置中指定“工作目录”。
另请注意,不要在批量调用的另一个可执行文件(gzip.bat
,gzip.exe
)之后命名批处理文件。