批处理判断目录是否空,统计文件夹中的文件的个数
(2020-05-24 10:59:08)
标签:
批处理判断空目录统计文件个数 |
分类: 批处理(脚本) |
:: 代码1
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /ad /b') do (
set n=0
for /f %%j in ('dir "%%i" /a /b') do set /a n+=1
if !n!==0 echo %%i>>空目录道名.txt
)
如果包括子内目录,把 'dir /ad /b' 改为容 'dir /ad /b
/s',另!n!其实相当变量%n的引用%n%,因为启用了变量延迟,所以就要变成这样。 变量延迟 "setlocal
enabledelayedexpansion"
::代码2
@echo
off&if not exist F:\测试\*.* set/p=该目录为空pause>nul&exit
当然这是比较简单的例子
用for做的效果会更好!
LS那位写的比较复杂,也不需要用2个for
@echo off&for /f %%i in ('dir /s/b "F:\测试\*.*"') do if not exist %%i
set/p=该目录为空nul&exit
当然这是比较简单的例子
用for做的效果会更好!
LS那位写的比较复杂,也不需要用2个for
@echo off&for /f %%i in ('dir /s/b "F:\测试\*.*"') do if not
说明:上面两个代码,一个用FOR和两个FOR循环一样实现判断空目录。
代码1:
cd /d
%~dp0
d:
cd .\112
dir /B /A-D .\*.* | find /V /C "">count.txt
set /P c=
echo %c%
pause
exit
以上为全部代码,我才测试过,完全符合你的要求,你在最后一行会看到文件数量
d:
cd .\112
dir /B /A-D .\*.* | find /V /C "">count.txt
set /P c=
echo %c%
pause
exit
以上为全部代码,我才测试过,完全符合你的要求,你在最后一行会看到文件数量
代码2:
@echo off
if {%1}=={} echo.Synatx: %0 path & goto end
if not exist "%~1" echo. "%~1" not found. & goto
end
for /f "delims=" %%a in ('dir /a-d-s-h /b "%~1" ^|
find /v /c ""') do (
)
:end
@echo on
前面有人给出了用find求文件个数的方版案,很好。 不过要注意以下细节,
dir参数一要注意/a-d/-s-h, 二要带/b参数,才能得到正确结果。
如果需要统计可能的隐藏文件和系统文权件等,那么dir /a-d 不行,但要dir /a-d
/b才可。
代码3:
@echo off
for /f "delims=" %%i in ('dir/b/a-d "d:\112" 2^>nul') do
set /a cnt+=1
if defined cnt (echo,共有%cnt%个文件.) else echo,没有找到文件.
pause
你可以把百"D:\112"修改成你想要的任何度文件夹;
如果希望将”D:\112“下的子文知件夹下的文件也包含在内的话,在道dir后面再加个/s
以上三个代码,第一,二代码用FIND函数来统计,个人感觉还是第三个代码用FOR循环比较好理解,效率应该也是最高。
前一篇:批处理条件连接符号||,,区别
后一篇:批处理中!a!是什么意思