怎样用批处理判断指定文件夹是否为空?最好有相关命令及参数的说明。

我想要达到如下的效果:如果ABC(文件夹名称)是空的,则执行M(其他的命令);如果ABC不是空的,则执行N。注意:不管ABC的属性以及ABC下的文件和文件夹是否为系统隐藏... 我想要达到如下的效果:
如果ABC(文件夹名称)是空的,则执行M(其他的命令);
如果ABC不是空的,则执行N。
注意:不管ABC的属性以及ABC下的文件和文件夹是否为系统隐藏都应该有效。最好给出相关命令及参数的说明。
展开
 我来答
yyykkkyyyy
2011-07-24 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3300万
展开全部
@echo off
set dn=ABC
dir/a/b "%dn%\"|findstr . >nul&&(N)||(M)

大致就是这样的
如果ABC不在批处理同位置需要写全路径
dir显示文件或文件夹名称
/a 无论什么属性
/b 只显示名称(即如果是空的会无显示)
| 管道命令 表示前面命令结果作为后面命令的输入
findstr 查找命令
. 表示查找任意字符
>nul 因为找到了会在屏幕显示结果,不要显示
&& 和|| 都是连接命令,分别对应前面命令找到了和没找到时执行M 和N 你自己写全,我这写法是不合格的,一般简单的单个命令直接写在此处,并可省去括号,复杂的或者说很多条命令的则愿意用goto命令跳转到某标签处再执行,如要写在此处也要分行且加括号,如一行太长可在正括号后断开另起一行
wbchn
2011-07-24 · TA获得超过338个赞
知道小有建树答主
回答量:164
采纳率:0%
帮助的人:205万
展开全部
不太好做, 不过有个简单的方法,利用rmdir命令不能删除非空目录:
RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path

/S 除目录本身外,还将删除指定目录下的所有子目录和
文件。用于删除目录树。

/Q 安静模式,带 /S 删除目录树时不要求确认
---------
SET FOLDER=ABC
@REM 尝试删除一下,如果删除成功,则说明文件夹空, 跳转到M(如果需要这个目录还需要创建一次)
rmdir /Q %FOLDER% && goto :M
@rem 如果没跳到M,则说明文件夹非空,
goto :N
...
@rem M执行,如果需要上面的目录,则需要恢复创建下
:M
mkdir %FOLDER%
...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
453625978
2011-07-24 · TA获得超过3591个赞
知道大有可为答主
回答量:2445
采纳率:0%
帮助的人:3006万
展开全部
@echo off&SetLocal EnableDelayedExpansion
Set n=0
for /f "delims=" %%i in ('dir /s /a /b "520\新建文件夹"') do Set /a n+=1
if %n%==0 M
If %n% gtr 0 N
pause

::由于我是在桌面测试,用的是相对路径("520\新建文件夹")。你如果要判断,最好用绝对路径,例如:("c:\hello world")

相对而言3y3k的算法最优,代码简洁。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sudoku52
2011-07-24 · TA获得超过7万个赞
知道大有可为答主
回答量:1.2万
采纳率:82%
帮助的人:4886万
展开全部
dir/b abc|findstr .&&start n||start n
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式