怎样用批处理判断指定文件夹是否为空?最好有相关命令及参数的说明。
我想要达到如下的效果:如果ABC(文件夹名称)是空的,则执行M(其他的命令);如果ABC不是空的,则执行N。注意:不管ABC的属性以及ABC下的文件和文件夹是否为系统隐藏...
我想要达到如下的效果:
如果ABC(文件夹名称)是空的,则执行M(其他的命令);
如果ABC不是空的,则执行N。
注意:不管ABC的属性以及ABC下的文件和文件夹是否为系统隐藏都应该有效。最好给出相关命令及参数的说明。 展开
如果ABC(文件夹名称)是空的,则执行M(其他的命令);
如果ABC不是空的,则执行N。
注意:不管ABC的属性以及ABC下的文件和文件夹是否为系统隐藏都应该有效。最好给出相关命令及参数的说明。 展开
4个回答
展开全部
@echo off
set dn=ABC
dir/a/b "%dn%\"|findstr . >nul&&(N)||(M)
大致就是这样的
如果ABC不在批处理同位置需要写全路径
dir显示文件或文件夹名称
/a 无论什么属性
/b 只显示名称(即如果是空的会无显示)
| 管道命令 表示前面命令结果作为后面命令的输入
findstr 查找命令
. 表示查找任意字符
>nul 因为找到了会在屏幕显示结果,不要显示
&& 和|| 都是连接命令,分别对应前面命令找到了和没找到时执行M 和N 你自己写全,我这写法是不合格的,一般简单的单个命令直接写在此处,并可省去括号,复杂的或者说很多条命令的则愿意用goto命令跳转到某标签处再执行,如要写在此处也要分行且加括号,如一行太长可在正括号后断开另起一行
set dn=ABC
dir/a/b "%dn%\"|findstr . >nul&&(N)||(M)
大致就是这样的
如果ABC不在批处理同位置需要写全路径
dir显示文件或文件夹名称
/a 无论什么属性
/b 只显示名称(即如果是空的会无显示)
| 管道命令 表示前面命令结果作为后面命令的输入
findstr 查找命令
. 表示查找任意字符
>nul 因为找到了会在屏幕显示结果,不要显示
&& 和|| 都是连接命令,分别对应前面命令找到了和没找到时执行M 和N 你自己写全,我这写法是不合格的,一般简单的单个命令直接写在此处,并可省去括号,复杂的或者说很多条命令的则愿意用goto命令跳转到某标签处再执行,如要写在此处也要分行且加括号,如一行太长可在正括号后断开另起一行
展开全部
不太好做, 不过有个简单的方法,利用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%
...
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%
...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@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的算法最优,代码简洁。
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的算法最优,代码简洁。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
dir/b abc|findstr .&&start n||start n
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询