2010-09-28 4 views
0

J'essaie de trouver, en une seule ligne, le nombre de fichiers (* .rar) dans un répertoire.Nombre de fichiers dans un répertoire

Pour ce faire, je suis en utilisant les commandes:

for /f "delims=" %i in ('find /c ".rar" "D:\backup e ckpdb ept-icd\test\unload\lista_files_rar.txt"') do echo %i 

mais la valeur de% i je à la fin est la suivante: D: \ BACKUP E CKPDB EPT-ICD \ TEST \ UNLOAD \ LISTA_FILES_RAR.TXT: 8

Je voudrais obtenir seulement le nombre 8 donc au lieu de renvoyer la valeur que j'attribuerais à une variable. J'utilise la ligne de commande: dir/b * .rar |

find/c ".rar" qu'elle renvoie la valeur des fichiers rar dans le répertoire, mais je ne peux pas attribuer la valeur à une variable, par exemple: dir/b * .rar | trouver/c ".rar" | set/a fichiers =

J'ai essayé aussi d'utiliser les jetons de mots clés = 2, mais il ne fonctionne pas

ps Si possible de le faire uniquement avec la commande find est également mieux

Répondre

1

Voir here par exemple sur les fichiers de comptage

Ou vous pouvez simplement faire quelque chose comme ça (n ot testé)

for /F %%j in ('dir /B *.rar ^| find /C /V ""') do set count=%%j 
0

Ce rendement juste le nombre; il pourrait y avoir un propre façon de le faire, mais unfortuantly « trouver » ne peut pas le prendre est entrée d'un tuyau (c.-à-je ne peux pas faire dir | find):

@echo off 
dir /b *.rar> out.tmp 
for /f "usebackq tokens=3" %%i in (`find /c "rar" out.tmp`) do echo %%i 
del out.tmp 
0

Try « delims =: jetons = 3 "

vous aura normalement deux-points dans le résultat, l'une après la lettre de lecteur et un avant le numéro que vous voulez, si votre numéro doit être jeton 3

0

Merci, je pense que je vais utiliser

pour/F %% j ('dir/B * .rar^| trouver/C/V « » ') ne définissez count = %% j

user135127

De cette façon, je pense aussi si somethink au nom du répertoire le résultat doit rester toujours le même.

qui est la différence entre:

dir/B * .rar^| find/C/V "" et

dir/B * .rar^| trouver/C ".rar"?

0
for /f %a in ('dir "*.txt" ^| find "File(s)"') do set Count=%a 

Donne

set Count=36 

ou vous pouvez utiliser un ensemble arithmétique et environnement retardé l'expansion des variables

set count=0 
for %a in (*.txt) do @set /a Count=!Count!+ 1 > nul 
echo %count% 

donne

Count=36 
Questions connexes