我已经创建了一个自动化的测试,它正在运行一个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企业版,OS build是14393.1593。
另一种方法是使用Subst命令。手动我可以使用命令提示符Map驱动器,如:
C:\build> Subst X: “C:\build\work\work1”
X:\>abc\abc.bat
它工作正常,没有“输入行太长”的问题。这是克服这个问题的好方法吗?以及如何使用流程构建器自动化这一过程?
2条答案
按热度按时间72qzrwbm1#
根据微软的文档“最大路径长度限制”,路径不够长,不足以达到Windows限制。
“输入行太长”必须包含其他字符,可能是传递给bat文件的参数,或者是用于调用该bat文件的参数。
要更好地了解实际执行的内容,请在windows中打开命令行进程审核。Command line process auditing
如果您以某种方式达到了这个限制,并且正在进行参数传递,我建议寻找一种不同的方法来获取这些信息,可能是通过保存到文件或从文件中阅读。
vyswwuz22#
PATH环境变量的内容也很重要。也许你正在添加到这个?如果时间太长,也会出现同样的错误。根据Windows版本,它可以低至2048