执行生活在jar文件中的批处理文件

时间:2013-09-25 16:20:23

标签: java batch-file jar

我有一个将用作executable.jar文件的Java项目。如果我的项目在其/ resources文件夹中包含批处理文件,那么如何编写项目代码以便在可执行文件运行时可以在内部调用批处理文件?

编辑:这是一个Windows 7批处理文件

1 个答案:

答案 0 :(得分:0)

让我们假设您的批处理文件位于“com.mycompany.MyBatch.bat”的类路径中

首先需要将文件复制到tmp,然后使其可执行,然后运行它:

public static void main(String[] args) throws Exception {
    final File tmp = File.createTempFile("myBatch", "batch");
    try (final ReadableByteChannel channel = Channels.newChannel(App.class.getResourceAsStream("/com/mycompany/MyBatch.bat"));
            final FileChannel fileChannel = new RandomAccessFile(tmp, "rw").getChannel()) {
        final ByteBuffer bb = ByteBuffer.allocate(1024);
        while (channel.read(bb) > 0) {
            bb.flip();
            fileChannel.write(bb);
            bb.clear();
        }
    }
    tmp.setExecutable(true);
    //run script
}