Limitation des chaînes de ligne de commande (Cmd. exe) de l’invite de commandes

Cet article décrit la limitation de la longueur des chaînes que vous utilisez à partir de l’invite de commandes dans l’invite de commandes (Cmd.exe). Il fournit également des méthodes que vous pouvez utiliser pour contourner cette limitation.

S’applique à : Windows Server 2012 R2, Windows Server 2008 R2 Service Pack 1, Windows 7 Service Pack 1
Numéro de la base de connaissances d’origine : 830473

Plus d’informations

La longueur maximale de la chaîne que vous pouvez utiliser à l’invite de commandes est de 8191 caractères.

Cette limitation s’applique aux points suivants :

  • ligne de commande
  • variables d’environnement individuelles héritées par d’autres processus, comme la variable PATH
  • toutes les extensions de variables d’environnement

Si vous utilisez l’invite de commandes pour exécuter des fichiers de commandes, cette limitation s’applique également au traitement des fichiers par lots.

Exemples

Les exemples suivants montrent comment cette limitation s’applique aux commandes que vous exécutez dans l’invite de commandes et aux commandes que vous utilisez dans un fichier de commandes.

  • Dans l’invite de commandes, la longueur totale de la ligne de commande suivante ne peut pas contenir plus de 8191 caractères :

    cmd.exe /k ExecutableFile.exe parameter1, parameter2... parameterN
    
  • Dans un fichier de commandes, la longueur totale de la ligne de commande suivante ne peut pas contenir plus de 8191 caractères :

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

    Cette limitation s’applique aux lignes de commande contenues dans les fichiers de commandes lorsque vous utilisez l’invite de commandes pour exécuter le fichier de commandes.

  • Dans l’invite de commandes, la longueur totale après EnvironmentVariable1 le développement EnvironmentVariable2 et EnvironmentVariable3 ne peut pas contenir plus de 8191 caractères :

    c:> set EnvironmentVariable1 = EnvironmentVariable2 EnvironmentVariable3
    
  • Dans un fichier de commandes, la longueur totale de la ligne de commande suivante après le développement des paramètres ne peut pas contenir plus de 8191 caractères :

    ExecutableFile.exe parameter1 parameter2
    
  • Même si la limitation Win32 pour les variables d’environnement est de 32 767 caractères, l’invite de commandes ignore toutes les variables d’environnement héritées du processus parent et sont plus longues que ses propres limitations de 8191 caractères (selon le système d’exploitation). Pour plus d’informations sur la SetEnvironmentVariable fonction, consultez Fonction SetEnvironmentVariableA.

Comment contourner la limitation

Pour contourner la limitation, utilisez une ou plusieurs des méthodes suivantes, en fonction de votre situation :

  • Modifiez les programmes qui nécessitent de longues lignes de commande afin qu’ils utilisent un fichier contenant les informations de paramètre, puis incluez le nom du fichier dans la ligne de commande.

    Par exemple, au lieu d’utiliser la ExecutableFile.exe Parameter1 Parameter2... ParameterN ligne de commande dans un fichier de commandes, modifiez le programme pour utiliser une ligne de commande similaire à la ligne de commande suivante, où ParameterFile est un fichier qui contient les paramètres requis (parameter1 parameter2... ParameterN) :

    ExecutableFile.exe c:\temp\ParameterFile.txt
    
  • Modifiez les programmes qui utilisent des variables d’environnement volumineuses afin que les variables d’environnement contiennent moins de 8191 caractères.

    Par exemple, si la variable d’environnement PATH contient plus de 8191 caractères, utilisez une ou plusieurs des méthodes suivantes pour réduire le nombre de caractères :

    • Utilisez des noms plus courts pour les dossiers et les fichiers.
    • Réduisez la profondeur des arborescences de dossiers.
    • Stockez les fichiers dans moins de dossiers afin que moins de dossiers soient requis dans la variable d’environnement PATH.
    • Examinez les méthodes possibles que vous pouvez utiliser pour réduire la dépendance de PATH pour localiser .dll fichiers.