“L'entrée de la ligne est trop longue” erreur dans un script très simple pour aucune raison évidente
Le script suivant
cmd /C ""set PATH=nasm\;%PATH%" & "echo %PATH%""
Imprime seulement ceci:
The input line is too long.
The input line is too long.
Pourquoi? Comment puis-je résoudre ce problème?
P. S. Cela fonctionne:
cmd /C "echo %PATH%"
Et ce n'est pas le cas:
cmd /C ""echo %PATH%""
Qu'essayez-vous de résoudre? Votre ligne sera de définir le chemin d'accès et un retour le chemin d'accès a la valeur d'origine de nouveau
Je suis conscient de cela. Je suis à la configuration de l'environnement pour la commande suivante, qui n'est pas pertinent pour cette question donc je l'ai retiré à partir de l'exemple de code. Et je ne peux pas exécuter cette commande parce que le CHEMIN d'accès de l'installation échoue.
Je suis conscient de cela. Je suis à la configuration de l'environnement pour la commande suivante, qui n'est pas pertinent pour cette question donc je l'ai retiré à partir de l'exemple de code. Et je ne peux pas exécuter cette commande parce que le CHEMIN d'accès de l'installation échoue.
OriginalL'auteur Violet Giraffe | 2015-08-20
Vous devez vous connecter pour publier un commentaire.
Avec l'aide de deux guillemets doubles
""
, l'cmd.exe s'attend à une seule commande.Mais une commande a une limite de ~250 caractères.
Mais vous ne voulez pas d'une commande nommée
echo C:\windows\...
.Et votre
set path=... & echo %path%
ne peut pas travailler, comme le pourcentage d'expansion est effectuée avant la ligne est exécutée.Ce une
Mais je ne vois aucune raison pourquoi vous ne l'utilisez pas un bloc de code, peut-être avec setlocal
Si vous avez vraiment besoin d'utiliser
cmd /c
alors il peut aussi contient des guillemets, mais pas sur plusieurs commandes%VS120COMNTOOLS%..\..\VC\bin\vcvars32.bat & set PATH=nasm\;%PATH% & echo ^!PATH^!
Le problème est que%VS120COMNTOOLS%
chemin d'accès contient des espaces, j'ai donc besoin de s'échapper en quelque sorte.Le mettre entre guillemets?
"%VS120COMNTOOLS%..\..\VC\bin\vcvars32.bat" & set PATH=nasm\;%PATH% & echo ^!PATH^!
Je l'ai fait! Je pense que maintenant
cmd /C
poignées `"%VS120COMNTOOLS%..\..\VC\bin\vcvars32.chauve-souris"` (la cité de la partie) que la commande et le reste - comme argument(s). Voir les exemples ici: ss64.com/nt/cmd.htmlLa raison pour laquelle je ne peux pas utiliser un bloc de code, c'est que j'ai besoin d'appeler
cmd /C
, et donc j'ai besoin de tout le script à une seule ligne.Oui, ça marche! Je vous remercie.
OriginalL'auteur jeb
L'OP du problème diffère légèrement de celui de la mienne, mais j'ai aussi eu
The input line is too long
erreur dans un script très simple pour aucune raison évidente.Dans mon cas, la raison pour laquelle il n'était pas évident, c'est que j'avais précédemment endommagé mon environnement de manière récursive par la définition de mon Chemin jusqu'à ce qu'il dépasse la taille autorisée et puis j'avais résolu le problème avant d'essayer de diagnostiquer l'erreur.
Le redémarrage de l'invite de commande est suffisante dans ce cas, pour obtenir une nouvelle Voie.
Pour tester si vous pourriez faire quelque chose comme cela, il suffit d'afficher vos variables d'environnement en cours d'exécution
set
sans arguments. Dans mon cas, il a montré les récursivement Chemin beaucoup plus long que ce qui est illustré ici, mais vous voyez le répéter):Toute tentative de faire tout ce Chemin m'a donné
The input line is too long
OriginalL'auteur sage
Vous frapper la 8,192 caractère de ligne de commande de limite de longueur.
cmd /C ""set PATH=nasm\;%PATH%" & "echo %PATH%""
ligne elle-même, n'est-ce pas? C'est clairement pas très longtemps. Et mon%PATH%
est 1340 caractères. Aussi, je ne pense pas que souffler jusqu'à%PATH%
est possible aveccmd /C
qui crée le nouvel interpréteur de ligne de commande exemple à chaque fois.La longueur de la ligne sera calculé après de l'expansion de l'
%path%
variableDonc 2x la longueur de
%PATH%
dans mon cas? Encore moins de 3000 caractères.Veuillez consulter la P. S. article je viens d'ajouter à ma question. Toutes les idées de ce qu'il se passe?
Il est exact que l'exécutant plusieurs fois ne serait pas sauter la longueur, car il aura zéro entre chaque exécution de la commande CMD.
OriginalL'auteur aphoria
Eu le même problème et c'était en fait mal a signalé une erreur dans le nom de l'exécutable. A ce
au lieu de cela
OriginalL'auteur Tono Wiedermann