6
votes

Comment faire une chaîne en cmd pour la boucle?

J'essaie d'itérer une chaîne en script de lot: xxx

et obtenir cette sortie: xxx

Je pense que tous les 3 Les numéros seront imprimés: xxx

Qu'est-ce que je fais mal?


0 commentaires

3 Réponses :


4
votes

Essayez pour à la place de pour / f . En outre, citant la valeur lors de la réglage var est inutile: xxx


3 commentaires

@Ed, je veux itération de la chaîne, délimitée par des espaces hâte, donc je suppose que la citation est nécessaire


@Alvin, Joey - Avez-vous essayé mon exemple? (Bien que vous ayez raison, / d est inutile)


@ ks1322 - La citation n'est pas nécessaire dans les scripts de lots - L'espace est le délimiteur par défaut (d'où vous devez citer les chemins de système de fichiers contenant des espaces)



16
votes

C'est parce que pour / F divise une ligne de chaque ligne dans plusieurs jetons, mais vous devez définir le nombre de jetons que vous souhaitez traiter. XXX PRE>

EDIT: STROND> Autres solutions P>

Comme la réponse de Ed Harper:
Vous pouvez également utiliser une boucle normale pour la boucle, avec la limitation qui tentera également de Serach pour des fichiers sur le disque, et il a des problèmes avec * code> et ? Code>. P>

setlocal EnableDelayedExpansion
set LF=^


set "var=1 2 3 4 5"
set "var=%var: =!LF!%"
for /F %%i in ("!var!") do (  
  echo %%i
)


2 commentaires

C'est le plus proche de ce que je veux. Le seul inconvénient est que je ne sais pas à l'avance le nombre de jetons - c'est une entrée utilisateur. Je suppose que cela peut être corrigé en choisissant une valeur égale à une taille de liste de jetons maximale telle que "jetons = 1-10" .


@ ks1322 Vous pouvez également utiliser la technique de ligne de ligne



2
votes

parce que pour / f boucle chaque ligne d'un fichier texte, et lorsqu'il est utilisé avec une chaîne ( "" " cité), il ne fait que des choses sur cette ligne. Il fait délimit par blanchiment, mais qui doit être utilisé avec l'option jetons .

Vous devez utiliser pour < Pré> xxx

Si vous souhaitez boucler des numéros, utilisez ce qui suit: xxx


0 commentaires