Je génère un fichier de lots Windows qui pourrait devenir assez grand, dites quelques mégaoctets. J'ai recherché des limites possibles concernant la taille maximale du fichier et la longueur maximale d'une ligne dans un fichier de commandes, mais je n'ai pu trouver rien. Toutes expériences pratiques? P>
6 Réponses :
Je pense que le choix peut être quelque chose jusqu'à 2 Go, peut-être encore plus. C'est une langue interprétée, donc si cela est fait correctement, la limite de fichiers devrait être la limite de fichier de fichiers du système de fichiers. Je n'ai jamais eu d'erreur avec des fichiers de lots trop gros, et certains de ceux que j'ai créés étaient de plusieurs mbs de taille. P>
Il devrait y avoir une limite de longueur de ligne, mais elle devrait être plus de 256. Cela peut être facilement testé, faites simplement une "définition A = 123456789012 ... endofline", après cela "ECHO% A%", et vous Ça va voir jusqu'où vous pouvez aller. P>
Cela fonctionne pour moi avec de très longues lignes (environ 4k), mais à 8k Toujours testé pour la définition, testé également avec "Echo Off", des milliers de lignes de jeu, après cette "fin d'écho", et cela a fonctionné pour un fichier de 11 Mo (bien qu'il fallait quelques secondes pour finir :) - Aucune limite en vue ici. p>
110 Mo a fonctionné aussi. Est-ce assez? ;) p> echo code> donne un message, "ligne trop longue", donc 8192 octets devraient être une limite. p>
joli. Merci de tester cela pour moi :-) 8K sonne beaucoup, alors j'espère que cela suffit. Sinon, je pouvais peut-être diviser les lignes avec ce petit chapeau ^?
Non, juste testé, aussi. 8K semble être une limite difficile, même avec la fente.
Notez également que cela concerne les lignes finales (avec des variables remplacées), donc echo% A %% a% échouera si% A% est une corde de plus de 4k!
Certaines idées, pas nécessairement exclusivement exclusives: p>
Il devrait fonctionner au moins jusqu'à 2 Go. Les lignes sont lues directement à partir du fichier BAT sur le disque (il n'y a pas de mise en cache impliqué). Je fais cette déclaration à cause des éléments suivants: p>
En fait, vous pouvez modifier un fichier BAT pendant qu'il fonctionne! Et cela travaillera même si un éditeur de texte peut renommer l'original version et enregistrez la nouvelle version dans un nouvel emplacement sur le disque. Tant que vous faites attention à ne pas insérer de texte ci-dessus la commande actuellement exécutée. Les lignes peuvent être modifié / inséré / supprimé ci-dessous l'exécution actuelle La commande et les nouvelles lignes seront exécutées. j'ai souvent fait cela avec des fichiers BAT contenant une longue liste de Commandes Wget, chacun prenant des dizaines de minutes à exécuter. P>
Selon Microsoft, il n'y a pas de limite à une taille de fichier de lot. Cependant, une ligne de fichier de commandes ne doit pas dépasser 127 octets ou il sera tronqué à l'exécution. P>
voir Longueur maximale de la ligne et comptez pour les fichiers de lot et config.sys em> p>
Ceux-ci étaient limites étaient circa win 3.x et plus tôt. Gagnez XP (4.x) ou une augmentation de ces limites.
Il existe de nombreuses limites différentes.
Il n'y a pas de limite (connue) pour le fichier lui-même, également des blocs de code semble être illimité. p>
La taille maximale d'une variable est de 8191 caractères.
Évidemment, la limite d'une ligne doit être plus grande pour affecter une variable de taille maximale.
Même le nom de la variable peut être de 8191 caractères. p>
Il est possible de construire une ligne avec 16387 caractères p> mais l'analyseur de lots est capable de lire beaucoup plus longs lignes (testées avec 100k en une seule ligne) . Ceci fonctionne car une fois l'expansion de la ligne contenant uniquement
Mais il est nécessaire que la longueur effective est <~ 8191 caractères après l'expansion % en pourcentage em>.
Comme dans p> echo fin code>.
(Un bug em> de l'analyseur: l'analyseur tombe à chaque multiple de 8192 un caractère) p> p>
La longueur maximale de toute ligne de commande (ou variable) dans cmd est 8191 caractères a>. p>
Sans entrer dans ce que vous envisagez exactement d'écrire dans ce fichier de commandes, il me semble que si vous avez besoin d'écrire quelques mégaoctets, vous faites quelque chose de mal. Les mégaoctets de lot ne me frappent pas comme un bon design.
tu as raison. C'est une solution de contournement Quick'n'Dirty - mais c'est le moyen le plus rapide d'aller.