记录一下Windows系统下的命令行参数的字符个数限制
记得在三年前,我们在做应用升级,选型了通过启动传参的方式,客户端通过传递参数给更新器 参数,执行应用升级。一开始更新的应用不多,参数的字符个数也是在1000以内,没有发现问题。后来随着全家桶应用的新增,应用个数越来越多,直到在一个测试升级的时候,测试手动写了一万多个字符的更新的描述。执行升级直接异常了。1、查阅了微软的官方文档,命令提示符行字符串限制 - Windows Client | Microsoft Learn,有如下的说明:
以下示例演示如何将此限制应用于在命令提示符中运行的命令以及批处理文件中使用的命令。
[*]在命令提示符中,以下命令行的总长度不能超过 8191 个字符:
cmd.exe /k ExecutableFile.exe parameter1, parameter2... parameterN
[*]在批处理文件中,以下命令行的总长度不能超过 8191 个字符:
cmd.exe /k ExecutableFile.exe parameter1, parameter2... parameterN
[*]此限制适用于使用命令提示符运行批处理文件时包含在批处理文件中的命令行。
[*]在命令提示符中,展开EnvironmentVariable2EnvironmentVariable3后的总长度EnvironmentVariable1不能超过 8191 个字符:
c:> set EnvironmentVariable1 = EnvironmentVariable2 EnvironmentVariable3
[*]在批处理文件中,展开参数后以下命令行的总长度不能超过 8191 个字符:
ExecutableFile.exe parameter1 parameter2
[*]尽管环境变量的 Win32 限制为 32,767 个字符,但命令提示符会忽略从父进程继承的任何环境变量,并且比自身限制 8191 个字符(适用于操作系统)长。 有关函数 SetEnvironmentVariable 的详细信息,请参阅 SetEnvironmentVariableA 函数。
2、准备工作:先实现一个控制台程序 CmdConsoleApp,供进程启动调用
// See https://aka.ms/new-console-template for more informationConsole.WriteLine("Hello, World!");if (args.Length
页:
[1]