当我使用cmd计算文件夹中的文件时,以下代码集会给出不同的结果。你能告诉我一个正确的方法吗?
@echo off
setlocal EnableDelayedExpansion
set aa=0
for %%s in ("F:\*.*") do (
set /a aa=!aa!+1
)
echo !aa!
set aa=0
for %%s in ("F:\*.*") do (
set /a aa=!aa!
)
echo !aa!
endlocal
set aa=0
for %%s in ("F:\*.*") do (
set /a aa=%aa%+1
)
echo %aa%
set aa=0
for %%s in ("F:\*.*") do (
set /a aa=%aa%
)
echo %aa%
pause
答案 0 :(得分:0)
这两个片段将计算F:\
中的可见文件@echo off
setlocal EnableDelayedExpansion
set aa=0
for %%s in ("F:\*.*") do (
set /a aa+=1
)
echo !aa!
对于上述情况,您也可以使用:
@echo off
set aa=0
for %%s in ("F:\*.*") do (
set /a aa+=1
)
echo %aa%
答案 1 :(得分:0)
这是一个更快的解决方案。使用DIR / B列出文件,将结果传递给FIND / C以计算条目数。以下将给出与foxidrive解决方案相同的结果。
@echo off
dir /b /a-d-h-s ^| find /c /v ""
/a-d-h-s
选项排除目录,隐藏文件和系统文件。如果要包含隐藏文件和系统文件,请使用/a-d
。
/v ""
是一种让FIND匹配任何值的神秘方法。
如果需要使用计数定义变量,则使用FOR / F来捕获结果。
@echo off
for /f %%N in ('dir /b /a-d-h-s ^| find /c /v ""') do set count=%%N
echo %count%