'不被识别为内部或外部命令'从Java运行批处理
问题描述:
我试图运行这个'gzip.bat'。它所做的就是压缩它所在目录中的所有文件。'gzip.exe'位于同一目录中。'不被识别为内部或外部命令'从Java运行批处理
@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
)。
已经将其改为 过程P1 =的Runtime.exec( “CMD/C开始\” M:\\工作区\\客户端工具\\数据\\绘图者\\ gzipdir \\ gzip.bat \ “” ); 它仍然不起作用。 – 2014-08-28 07:38:25