Limitación de cadena de línea de comandos del símbolo del sistema (Cmd. exe)

En este artículo se describe la limitación de la longitud de las cadenas que se usan desde el símbolo del sistema en el símbolo del sistema (Cmd.exe). También proporciona métodos que puede usar para solucionar esta limitación.

Se aplica a: Windows Server 2012 R2, Windows Server 2008 R2 Service Pack 1, Windows 7 Service Pack 1
Número de KB original: 830473

Más información

La longitud máxima de la cadena que puede usar en el símbolo del sistema es de 8191 caracteres.

Esta limitación se aplica a:

  • la línea de comandos
  • variables de entorno individuales heredadas por otros procesos, como la variable PATH
  • todas las expansiones de variables de entorno

Si usa el símbolo del sistema para ejecutar archivos por lotes, esta limitación también se aplica al procesamiento de archivos por lotes.

Ejemplos

En los ejemplos siguientes se muestra cómo se aplica esta limitación a los comandos que se ejecutan en el símbolo del sistema y a los comandos que se usan en un archivo por lotes.

  • En el símbolo del sistema, la longitud total de la siguiente línea de comandos no puede contener más de 8191 caracteres:

    cmd.exe /k ExecutableFile.exe parameter1, parameter2... parameterN
    
  • En un archivo por lotes, la longitud total de la siguiente línea de comandos no puede contener más de 8191 caracteres:

    cmd.exe /k ExecutableFile.exe parameter1, parameter2... parameterN
    

    Esta limitación se aplica a las líneas de comandos que se encuentran en archivos por lotes cuando se usa el símbolo del sistema para ejecutar el archivo por lotes.

  • En el símbolo del sistema, la longitud total de después de EnvironmentVariable1 expandir EnvironmentVariable2 y EnvironmentVariable3 no puede contener más de 8191 caracteres:

    c:> set EnvironmentVariable1 = EnvironmentVariable2 EnvironmentVariable3
    
  • En un archivo por lotes, la longitud total de la siguiente línea de comandos después de expandir los parámetros no puede contener más de 8191 caracteres:

    ExecutableFile.exe parameter1 parameter2
    
  • Aunque la limitación de Win32 para las variables de entorno es de 32 767 caracteres, el símbolo del sistema omite las variables de entorno que se heredan del proceso primario y tienen más de sus propias limitaciones de 8191 caracteres (según corresponda al sistema operativo). Para obtener más información sobre la SetEnvironmentVariable función, vea SetEnvironmentVariableA function.

Cómo solucionar la limitación

Para evitar la limitación, use uno o varios de los métodos siguientes, según corresponda a su situación:

  • Modifique los programas que requieren líneas de comandos largas para que usen un archivo que contenga la información de parámetros y, a continuación, incluyan el nombre del archivo en la línea de comandos.

    Por ejemplo, en lugar de usar la ExecutableFile.exe Parameter1 Parameter2... ParameterN línea de comandos en un archivo por lotes, modifique el programa para usar una línea de comandos similar a la siguiente línea de comandos, donde ParameterFile es un archivo que contiene los parámetros necesarios (parameter1 parameter2... ParameterN:

    ExecutableFile.exe c:\temp\ParameterFile.txt
    
  • Modifique los programas que usan variables de entorno grandes para que las variables de entorno contengan menos de 8191 caracteres.

    Por ejemplo, si la variable de entorno PATH contiene más de 8191 caracteres, use uno o varios de los métodos siguientes para reducir el número de caracteres:

    • Use nombres más cortos para carpetas y archivos.
    • Reduzca la profundidad de los árboles de carpetas.
    • Almacene archivos en menos carpetas para que se requieran menos carpetas en la variable de entorno PATH.
    • Investigue los posibles métodos que puede usar para reducir la dependencia de PATH para localizar .dll archivos.