';无法识别为内部或外部命令';从Java运行批处理
我正在尝试运行这个“gzip.bat”。它所做的是压缩它所在目录中的所有文件gzip.exe'位于同一目录中';无法识别为内部或外部命令';从Java运行批处理,java,batch-file,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,
@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() );
}
我做错了什么?在指定批处理文件的名称时,假定“当前”目录错误。这取决于如何启动应用程序
如果从IDE运行,它很可能是项目文件夹
如果从命令行运行Java应用程序,那么很明显(当前文件夹)
将路径(\\data\\mapmaker\\gzipdir\\gzip.bat
)更改为绝对路径,它将工作。或者在IDE的运行配置中指定“工作目录”,当您从那里启动它时
也不要以从批处理调用的另一个可执行文件(
gzip.bat
,gzip.exe
)命名批处理文件。已将其更改为Process p1=runtime.exec(“cmd/c start\”M:\\Workspace\\Client Tools\\data\\mapmaker\\gzipdir\\gzip.bat\”;但它仍然不起作用。