0

我创建了一个运行 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 的路径。(我正在从系统环境变量中获取此路径)。路径exe包含abc\abc.bat的路径

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

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

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

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

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

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

4

1 回答 1

1

根据微软的文档“最大路径长度限制”,路径不够长,无法达到 Windows 限制。

“输入行太长”必须包含其他字符,可能是传递给 bat 文件的参数,或者用于调用该 bat 文件的参数。

要更好地了解实际执行的内容,请在 Windows 中打开命令行进程审计。 命令行进程审计

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

于 2017-08-25T17:32:32.033 回答