Il n'y a pas aucune manière de dire POUR la commande de ne pas traiter les delims consécutifs comme delim simple. La manière que je travaille typiquement autour de ceci est « pré de traiter » la ligne d'entrée et de rechercher des paires de delims avec rien entre eux. Je remplace ces derniers par quelque chose entre les delims que je peux alors vérifier dans le code et traiter comme valeur absente ou vide.
Ainsi si la ligne d'entrée était
D.C.A., bbb
Et je veux traiter 4 valeurs plutôt que les 2 aux lesquels POUR la collecte de volonté par défaut, puis moi convertir d'abord la ligne
D.C.A., @, @, bbb
et alors introduire cela dans POUR et analyser sur la virgule.
J'attache le code avec ce changement, me laisse sais il va pour vous. J'ai fait deux ou trois autres petits ajustements, me laisse sais quelles questions vous avez.
- nécessaire pour ajouter l'EnableDelayedExpansion setlocal de sorte que j'aie pu mettre à jour et employer une variable à l'intérieur d'une boucle
- a défini le nom de fichier d'entrée comme variable, et l'a cité principalement POUR cela le lit, pour traiter le cas où le nom de fichier pourrait inclure les espaces
- l'externe POUR la boucle lit la ligne entière, puis nous assignons cela à une variable de sorte que nous puissions remplacer les valeurs « vides » par un texte d'attente (j'ai employé @, pourrais être quelque chose que vous aimez)
- alors un autre POUR tout comme votre original analyse la corde résultante et appelle la sous-routine
- J'ai ajouté un ÉCHO de l'inputline avant et après que la conversion que juste ainsi vous pouvez voir comment cela fonctionne, ceux-ci soit enlevé plus tard
Espérer que ceci aide
~bp