Comment compter toutes les occurrences d'une chaîne particulière dans un fichier à l'aide d'un fichier de commandes?

3
setlocal EnableDelayedExpansion

for /f %%C in ('Find /C "pdf" ^< %CD%\sample.txt') do set Count=%%C
    echo Found = !Count! time/s >> xerox.log
    echo Found = %%C time/s

pause

C'est mon fichier batch. Il trouve et compte le mot "pdf" dans tout le fichier, mais il compte par ligne. Il ne compte pas toutes les occurrences. Comment puis-je tout compter?

matière grise
la source
peut être pertinent
Raystafarian
Je ne peux pas comprendre ce qu'il y a dedans désolé. Souhaitez-vous préciser quels codes utiliser?
greyMatter

Réponses:

3

Comment trouver toutes les occurrences du mot "pdf" dans un fichier?

Utilisez le fichier de commandes suivant.

test.cmd

@echo off
setlocal
setlocal EnableDelayedExpansion
set _count=0
set _match=pdf
set _file=abc.txt

for /f "tokens=*" %%i in (%_file%) do (
  set _line=%%i
  call :match
  )
 goto :done

:match
  for /f "tokens=1,*" %%a in ("%_line%") do (
    set _word=%%a
    set _line=%%b
  )
  if /i "%_word%"=="%_match%" set /a _count=!_count!+1
  if "%_line%"=="" goto :eof
goto :match

:done
echo."pdf" was found !_count! times.

endlocal
  • Remplacez-le abc.txtpar le nom de fichier contenant votre txt.
  • Remplacez-le echo."pdf" was found !_count! times.par vos propres echocommandes, le cas échéant.

abc.txt

abc pdf def pdf
pdf
pdf pdf pdf
abc def ghi

exemple d'utilisation

F:\test>test
"pdf" was found 6 times.

F:\test>

que se passe-t-il si le fichier txt ressemble à ceci abc.pdf def.pdf pdf pdf pdf pdf abc def ghiIl ne compte que 4

Dans ce cas, la deuxième for /fcommande doit être modifiée pour utiliser à la fois les délimètres .et (la valeur par défaut) pour la correspondance.

Voici la ligne de remplacement:

  for /f "tokens=1,* delims=. " %%a in ("%_line%") do (

delims=. a été ajouté.


Lectures complémentaires

DavidPostill
la source
Merci! Ça marche! :) Mais j'ai une question, que se passe-t-il si le fichier txt ressemble à ceci abc.pdf def.pdf pdf pdf pdf pdf pdf abc def ghi? Cela compte seulement 4, peut-il être modifié pour compter aussi les deux autres? Désolé si je suis un peu gênant pour vous.
greyMatter
@greyMatter Oui. Nous devons changer le second for /fpour faire correspondre .et ``. J'ai mis à jour la réponse.
DavidPostill