6
votes

Comment puis-je obtenir une boucle pour travailler avec une chaîne délimitée des virgules?

Ceci est mon code jusqu'à présent: xxx

Je m'attends à produire: xxx

etc ...

mais au lieu de cela, je reçois: xxx

et c'est tout. Qu'est-ce que je rate?


0 commentaires

3 Réponses :


1
votes

Essayez ceci:

set test=1,2,3,4
for /d %%f IN (%test%) do echo %%f


0 commentaires

11
votes

Vous avez mal compris les options.

  • jetons = 1 code> signifie que vous voulez seulement le premier jeton sur chaque ligne. Vous voulez tous les jetons sur la ligne. LI>
  • eol =, code> signifie que vous souhaitez interpréter une virgule comme le début d'un commentaire fin de ligne em>. Vous souhaitez utiliser delims =, code> plutôt pour indiquer que la virgule est le délimiteur (au lieu de la valeur par défaut de WhitSpace). LI> ul>

    pour / f est principalement destiné à fonctionner sur des lignes dans un fichier. Tu ne fais pas ça. Vous utilisez sur une seule chaîne, la réponse de Rubens 'est-elle plus proche de ce que vous voulez: P>

    FOR /F "usebackq delims=, tokens=1-4" %%f IN ('1^,2^,3^,4') DO (
      ECHO .
      ECHO %%f    
      ECHO .
      ECHO %%g
      ECHO .
      ECHO %%h
      ECHO .
      ECHO %%i
    )
    


6 commentaires

"Vous avez mal compris les options": cela ne me suprise pas. La documentation que j'ai trouvée n'était pas si grande.


Mais si je le dis que la virgule est la fin de la ligne, je ne veux alors que le premier jeton sur chaque ligne? J'ai essayé d'utiliser l'option Delims aussi et je n'ai toujours pas reçu ce que je voulais. Tant pis.


Ouais, ça craint. POUR /? doit être lu très soigneusement. Ceci est une autre source: TECHNET.MICROSOFT.COM/EN-US/LIBRARY/BB490909 .aspx


eol ne signifie pas fin de ligne. Cela signifie tout après que la virgule soit un commentaire de fin de ligne. Y compris les virgules restantes.


EOL est donc vous pouvez analyser des fichiers comme des fichiers hôtes où; est utilisé comme caractère de commentaire, mais d'autres formats de fichiers utilisent @ comme un commentaire, etc. Toutes les choses entières sont pavées ensemble à partir de la cassette de crache et de conduite. C'est pourquoi PowerShell est la nouvelle hotness.


Jeez ouais, je souhaite que PowerShell était une option pour cette chose que je dois faire.



0
votes

@OP, et pendant que vous appreniez à utiliser les scripts DOS Batch, vous pouvez également apprendre VBScript (ou PowerShell) également. Ce sont des alternatives et permettent de faciliter votre script lot, en particulier lorsqu'il s'agit de tâches plus complexes.

C:\test>cscript //nologo mysplit.vbs 1,2,3,4
1
2
3
4


1 commentaires

Les deux bonnes options, mais malheureusement, ils auraient besoin d'approbation et nous sommes sur une date limite; Une fois que la date limite est terminée, je prévois de saisir des fichiers BAT de fossé à la hâte et d'aller à Nant pour cette tâche.