命令提示符 (cmd.exe) 的命令行字符串限制

适用于: Windows Server 2012 R2 StandardWindows Server 2012 R2 DatacenterWindows Server 2012 R2 Essentials

概要


本文讨论了您通过命令提示符命令提示符 (Cmd.exe) 并可用于解决此限制的方法中使用的字符串的长度限制。

详细信息


在计算机上运行 Windows XP 或更高版本,您可以在命令提示符下使用该字符串的最大长度 8191 个字符。在运行 Microsoft Windows 2000 或 Windows NT 4.0 的计算机,您可以在命令提示符下使用该字符串的最大长度为 2047个字符。

此限制适用于命令行,由其他进程和所有的环境变量扩展继承的各个环境变量 (例如 PATH 变量中)。如果您使用命令提示符运行批处理文件,此限制还适用于批处理文件。

示例

下面的列表提供了一些如何此限制适用于在命令提示符窗口中运行的命令和命令的批处理文件中使用的示例。
  • 在命令提示符中,您在命令提示符处使用以下命令行的总长度不能多于 2047或 8191 个字符 (根据您的操作系统)︰
    cmd.exe /k ExecutableFile.exe parameter1parameter2 ...parameterN
  • 在批处理文件中,在批处理文件中使用以下命令行的总长度不能多于 2047年或 8191 个字符 (根据您的操作系统):
    cmd.exe /k ExecutableFile.exe parameter1parameter2 ...parameterN
    此限制适用于当您使用命令提示符下运行该批处理文件包含在批处理文件中的命令行。
  • 在命令提示符处,总长度
    EnvironmentVariable1后展开
    EnvironmentVariable2
    EnvironmentVariable3不能多于 2047年或 8191 个字符 (根据您的操作系统):
    c: > 设置EnvironmentVariable1=EnvironmentVariable2EnvironmentVariable3
  • 在批处理文件中,以下命令行后展开环境变量在命令行中的总长度不能多于 2047年或 8191 个字符 (根据您的操作系统):
    ExecutableFile.exe parameter1parameter2
  • 命令提示符即使环境变量的 Win32 限制是 32767 个字符,将忽略从父进程继承和超过 2047年或 8191 字符 (根据需要自己限制的任何环境变量为操作系统)。SetEnvironmentVariable函数的详细信息,请访问下面的 Microsoft 网站:

如何解决限制

若要避开限制,请使用一个或多个下列方法 (根据您的具体情况):
  • 修改程序以使其使用的文件包含的参数信息,需要较长的命令行,然后在命令行中包括的文件的名称。

    例如,不要使用Parameter1 Parameter2 ExecutableFile.exe...ParameterN 在批处理文件中,命令行修改程序要使用的命令行类似于以下命令行,其中
    ParameterFile是一个文件,其中包含必需的参数 (parameter1 parameter2
    ...ParameterN):
    ExecutableFile.exe c:\temp\ParameterFile.txt
  • 修改程序,使环境变量包含小于号 (根据您的操作系统) 2047年或 8191 个字符使用较大的环境变量。

    例如,如果 PATH 环境变量中包含超过 2047年或 8191 字符 (根据您的操作系统),使用一个或多个以下的方法以减少字符数:
    • 使用较短的文件夹和文件的名称。
    • 减少文件夹树的深度。
    • 将文件存储在较少的文件夹,以便在 PATH 环境变量中需要较少的文件夹。
    • 调查可能的方法可以用来减少定位的.dll 文件的路径的依赖项。