J'ai une entrée dans un fichier batch qui contient une liste de fichiers (ceci est une ligne et une entrée parmi fichier de chauve-souris):Comment puis-je obtenir une boucle for pour travailler sur une chaîne délimitée par des virgules d'une seule ligne avec des espaces
"\\Server\my directory name\subdir,\\Server\my directory name\subdir2,\\Server\my directory name\subdir3"
Je voudrais parcourir cette liste et d'effectuer une commande sur chaque répertoire dans la liste. Cependant, lorsque je spécifie delims =, il traite les espaces comme des délimiteurs, même si les docs disent "Spécifie un ensemble de délimiteurs, ce qui remplace l'ensemble de délimiteurs par défaut d'espace et de tabulation". Ne semble pas remplacer, semble juste ajouter à. J'ai essayé de jouer avec backq mais cela ne semble pas fonctionner, puisque l'entrée est déjà citée.
Le plus proche que je peux obtenir est
for /f "tokens=1-8 delims=," %%d in ("%destPath%") do (
echo %%d
echo %%e
echo .
)
Mais j'ai un ensemble uknown d'entrées ici, donc je pourrais être obtenir 12 répertoires à venir et ne veulent pas avoir une ligne répétée pour l'exécution de la commande (Même ligne n fois dans le corps de la boucle), semble vaincre le but d'une boucle for.
connexes: How do I get a for loop to work with a comma delimited string?
Il a été peut-être 3 ans que je créé une boucle DOS comme celle-ci. Mais si ma mémoire me sert correctement, les chaînes de lot Dos ne peuvent pas contenir d'espaces. Il rechigne quand ils le font, et fondamentalement fait ce que vous vous plaignez. Cela fait un moment cependant. – jsmith
Eh bien, je pense que l'usebackq s'en occupera, mais bon sang si je peux le faire fonctionner. Je devrais juste abandonner ceci et écrire une application de console en C#. – jcollum
Cela étant dit, cela fonctionne * presque * en ce moment ... – jcollum