目录中的文件数

时间:2010-09-28 15:50:24

标签: windows batch-file find

我试图在一行中找到目录中的文件数量(* .rar)。

为此,我使用命令:

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

但最后我得到的%i的值是:D:\ BACKUP E CKPDB EPT-ICD \ TEST \ UNLOAD \ LISTA_FILES_RAR.TXT:8

我想只获取数字8,而不是回显我将值赋给变量的值。

我使用命令行:dir / b * .rar | find / c“.rar” 它返回目录中rar文件的值,但我无法将值赋给变量,例如:dir / b * .rar | find / c“.rar”| set / a files =

我还尝试使用关键字tokens = 2但它不起作用

p.s如果只使用find命令可以做到这一点也更好

5 个答案:

答案 0 :(得分:1)

有关计算文件的信息,请参阅here

或者你可以简单地做这样的事情(未经测试)

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

答案 1 :(得分:0)

这只返回数字;可能有一种更清洁的方法,但不幸的是“发现”不能从管道输入它(即,我不能做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

答案 2 :(得分:0)

尝试“delims =:tokens = 3”

结果通常会有两个冒号,一个在驱动器号后面,一个在你想要的数字之前,所以你的号码应该是令牌3

答案 3 :(得分:0)

谢谢,我想我会用

  

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

     

user135127

通过这种方式,我认为如果在dir名称中有一些想法,结果应该始终保持不变。

之间的区别是:

dir / B * .rar ^ |找/ C / V“”和

dir / B * .rar ^ | find / C“.rar”?

答案 4 :(得分:0)

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

给予

set Count=36

或者您可以使用算术集和延迟环境变量扩展

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

给出

Count=36