[DOS] Compter les mots d'un fichier texte

pignon -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je souhaiterai compter le nombre de mots (ou plutôt chaines de caractères) contenus dans un fichier texte.

Exemple, dans toto.txt j'ai "chaine1 chaine2 chaine3 chaine4". Comment compter en DOS ces 4 chaines ? Si je cherche à compter le nombre de chaines, c'est bien sûr que je ne connais pas à l'avance ce qui sera dans toto.txt

Si vous voulez savoir pourquoi je cherche ça (ou trouver un autre moyen de faire ce que je veux), c'est car j'écris dans toto.txt le nom d'un fichier (avec son chemin) mais le fichier peut très bien avoir des espaces dans son nom. Il faut pourtant que je récupère la totalité de la ligne. J'ai réussi à récupérer tout ça pour 2 chaines de caractères (séparées donc par un espace) mais si le nom de fichier contient 2 espaces (ou plus), ça ne marche plus, il faut que je recode pour 3 espaces... Bref, vu que je connais pas à l'avance le nom du fichier, il faut absolument que j'arrive à compter le nombre de chaines de caractères sur la ligne.

Merci beaucoup ;)
Configuration: Windows XP
Firefox 3.0.17

5 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    en lisant les lignes de ton fichier avec
    for /f "delims=" %%a in ('type liste.txt') do
    la variable %%a contiendra le nom avec tous les espaces
    0
  2. pignon
     
    Bonjour,

    Merci pour votre réponse. J'obtiens l'erreur
    %%a était inattendu
    quand j'exécute cette ligne. Savez-vous pourquoi ?

    Merci
    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    non, peut-n voir le code
    C:> type f1.txt
    a a
    b b b
    c c c c
    d d d d d
    e e e e e e
    f f f f f f f
    C:>
    C:> type aa.bat
    @echo off
    
    for /f "delims=" %%a in ('type f1.txt') do echo %%a
    
    C:> aa
    a a
    b b b
    c c c c
    d d d d d
    e e e e e e
    f f f f f f f
    
    0
  4. pignon
     
    En fait si je fais ça dans un .bat (comme vous l'avez fait), ça marche, si je mets ça directement dans l'invite de commande j'ai l'erreur mentionnée plus haut. Je ne sais pas pourquoi.

    Dans le bat :

    @echo off

    for /f "delims=" %%a in ('type toto.txt') do echo %%a

    Dans l'invite de commande :

    for /f "delims=" %%a in ('type toto.txt') do echo %%a

    Et le fichier toto.txt contient :

    "C:\Documents and Settings\Administrateur\Mes documents\mon fichier.txt"

    Merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    dansl'invite de commande, il ne faut uitiliser qu'un seul %:
    for /f "delims=" %a in ('type toto.txt') do echo %a
    0