我试图在一行中找到目录中的文件数量(* .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命令可以做到这一点也更好
答案 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