执行bat文件时输入行的问题太长

时间:2017-08-25 17:15:31

标签: java windows batch-file processbuilder appassembler

我创建了一个运行bat文件的自动化测试。这个abc.bat是使用应用程序汇编程序插件生成的。在bat文件中,已经设置了类路径并且Java命令一直在执行)。在Linux上,它工作正常,但在Windows环境中,我收到错误:

  

输入行太长

批处理文件的执行路径为C:\build\work\work1\abc\abc.bat。我必须保留此路径,不能将其缩小为C:\build\abc.bat

我正在使用流程构建器来运行此abc.bat文件。

public Test(Path wp, Path exe) throws IOException {
builder = new ProcessBuilder()
        .directory(wp.toFile())
        .command(wp.resolve(exe).toAbsolutePath().toString())
        .redirectOutput(Redirect.INHERIT)
        .redirectError(Redirect.INHERIT);

        builder.start();
}

路径wp包含C:\ build \ work \ work1的路径。 (我从系统环境变量中获取此路径)。 Path exe包含abc \ abc.bat

的路径

我做了一些研究,发现可以通过更改组策略来修复长路径问题,如下所示:

  

点击Windows键,输入gpedit.msc并按Enter键   导航到本地计算机策略&gt; <计算机配置>管理模板&gt;系统&gt;文件系统
  并启用win32长路径。

这对我不起作用。我使用的是Windows 10企业版,操作系统版本是14393.1593。

另一种方法是使用Subst命令。手动我可以使用命令提示符映射驱动器,如:

C:\build> Subst X: “C:\build\work\work1” 
X:\>abc\abc.bat

它工作正常,没有“输入行太长”的问题。这是克服这个问题的好方法吗?以及如何使用流程构建器自动执行此操作?

1 个答案:

答案 0 :(得分:1)

根据微软的文档&#34; Maximum Path Length Limitation&#34;该路径不足以达到窗口限制。

&#34;输入线太长&#34;必须包括其他字符,可能是传递给bat文件的参数,或者用于调用该bat文件的参数。

要更好地了解实际执行的内容,请在Windows中启用命令行进程审核。 Command line process auditing

如果您以某种方式达到该限制,并且参数传递正在发生,我建议找到一种不同的方式来获取该信息,可能是通过保存到文件并从中读取。

相关问题