Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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运行批处理_Java_Batch File - Fatal编程技术网

';无法识别为内部或外部命令';从Java运行批处理

';无法识别为内部或外部命令';从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,

我正在尝试运行这个“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() );
        }
我做错了什么?

在指定批处理文件的名称时,假定“当前”目录错误。这取决于如何启动应用程序

如果从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\”;但它仍然不起作用。