
标题: [讨论]批处理怎样判断一个文件夹是不是空文件夹? [打印本页]
作者: HAT 时间: 2008-8-19 21:18 标题: [讨论]批处理怎样判断一个文件夹是不是空文件夹?
收集判断一个文件夹(如C:\test\aaa)是不是空文件夹的方法。
抛砖引玉:CODE: [Copy to clipboard]
@echo off
set SrcFolder=C:\test\aaa
set flag=
if exist "%SrcFolder%" (
for /f "tokens=*" %%a in ('dir /a /s /b "%SrcFolder%"') do set flag=%%a
if "%flag%" neq "" (
echo %SrcFolder%不是空文件夹
) else (
echo %SrcFolder%是空文件夹
)
)
CODE: [Copy to clipboard]
@echo off
set SrcFolder=C:\test\aaa
if exist "%SrcFolder%" (
rd "%SrcFolder%">nul 2>nul
if exist "%SrcFolder%" (
echo %SrcFolder%不是空文件夹
) else (
echo %SrcFolder%是空文件夹
md "%SrcFolder%">nul 2>nul
)
)
2楼的思路:CODE: [Copy to clipboard]
@echo off
set SrcFolder=C:\test\aaa
if exist "%SrcFolder%" (
for /f "delims=" %%a in ('dir /a /b "%SrcFolder%"') do (
echo %SrcFolder%不是空文件夹
goto :eof
)
echo %SrcFolder%是空文件夹
)
5楼的思路:CODE: [Copy to clipboard]
@echo off
set SrcFolder=C:\test\aaa
if exist "%SrcFolder%" (
dir /a /b "%SrcFolder%"|findstr .*>nul&&echo.%SrcFolder%不是空文件夹||echo.%SrcFolder%是空文件夹
)
[ Last edited by HAT on 2008-8-30 at 11:21 AM ]
作者: slore 时间: 2008-8-19 21:54
@echo off
for /f "delims=" %%i in ('dir /b test') do echo 文件夹不为空&goto :End
echo 文件夹为空
:End
pause
作者: metoo 时间: 2008-8-19 22:10
投机总是那么有趣
| Quote: |
- @echo off
- set SrcFolder=C:\test\aaa
- rd %SrcFolder% >nul && md %SrcFolder% && echo 目录是空的
- pause
metoo发表于: 2008-08-19 21:55 |
|
[ Last edited by metoo on 2008-8-19 at 10:11 PM ]
作者: HAT 时间: 2008-8-19 22:20 标题: Re 3楼
当C:\test\aaa非空的时候,怎样输出:
C:\test\aaa不是空文件夹
作者: FQ 时间: 2008-8-20 09:06
一句话CODE: [Copy to clipboard]
dir/a/b <dirname>|findstr .* >nul&&echo,No空||echo.空的
作者: radem 时间: 2008-8-20 12:11
| Quote: |
Originally posted by FQ at 2008-8-20 09:06 AM:
一句话CODE: [Copy to clipboard]
dir/a/b <dirname>|findstr .* >nul&&echo,No空||echo.空的 |
|
高!
作者: HAT 时间: 2008-8-20 20:10 标题: Re 2楼
如果dir没有/a参数的话,无法排除隐藏文件。
作者: HAT 时间: 2008-8-20 20:13
汗水,加分搞错楼层了,明天补回来吧。
作者: BC 时间: 2008-8-20 20:27
还真的不错哦,特别是5l的思路...
作者: 523066680 时间: 2008-8-20 20:41
判断目录大小是否为0也可以的吧
回复11楼
哈 经别人一问……如果里面存在零字节 那也算是文件啊 所以这个方法失败
[ Last edited by 523066680 on 2008-8-20 at 10:06 PM ]
作者: HAT 时间: 2008-8-20 20:49 标题: Re 10楼
你试试写个代码出来?
作者: BC 时间: 2008-8-20 20:52
问题是如何获得文件夹的大小吧
作者: 523066680 时间: 2008-8-20 21:59
@echo off
set n=1
for /f %%a in ('dir f:\a /b') do (set n=0)
if %n% equ 1 (echo,f:\a不存在文件) else (echo,f:\a存在文件)
pause
作者: metoo 时间: 2008-8-20 22:00
| Quote: |
Originally posted by 523066680 at 2008-8-20 08:41 PM:
判断目录大小是否为0也可以的吧 |
|
不行。。文件夹始终返回为0
我前面那个不能处理有属性的文件夹。。还是dir最好了
[ Last edited by metoo on 2008-8-20 at 10:21 PM ]
作者: HAT 时间: 2008-8-21 12:02
13楼和2楼的思路类似
作者: knoppix7 时间: 2008-8-21 14:25
Rd "%~f1" 2>nul&&(Echo 目录为空&MD "%~f1")||(Echo 目录非空)
作者: qdloverr 时间: 2008-8-21 16:59
@echo off
set /a a=0
for /f "tokens=*" %%a in ('dir /b') do set /a a+=1
if %a% GTR 0 echo 不是空的&pause&exit
echo 是空的
pause
[ Last edited by qdloverr on 2008-8-21 at 05:19 PM ]
作者: knoppix7 时间: 2008-8-21 17:10
一堆DIR...
作者: picat 时间: 2008-8-21 17:17
我记得dos里专门有个命令或者参数判断文件夹是否为空的,一时想不起来,回去找找.
作者: 523066680 时间: 2008-8-21 17:37
这个也不错
attrib f:\a\
找不到文件 - F:\a\
-----------------------------------
dir f:\a /a-d |more +6
找不到文件
作者: kidzgy 时间: 2008-8-21 20:54
我觉得应该从判断这个文件夹的大小来出发
可是自己不会,我太弱了
嗯,可以在文件夹里建立一个空的记事本,这样就好比对了。
[ Last edited by kidzgy on 2008-8-21 at 08:56 PM ]
作者: 523066680 时间: 2008-8-22 07:27
[讨论]怎样判断一个文件夹是不是空文件夹?
要看题目,我开始也这么想 但是有人说了:文件夹如果大小为0 里面也不一定为空
1.畸形文件夹
2.空文件,即使是空文件,这个文件夹也不能算是空文件夹
作者: metoo 时间: 2008-8-22 07:34
| Quote: |
Originally posted by 523066680 at 2008-8-22 07:27 AM:
[讨论]怎样判断一个文件夹是不是空文件夹?
要看题目,我开始也这么想 但是有人说了:文件夹如果大小为0 里面也不一定为空
1.畸 ... |
|
先给文件夹去属性再rd应该可以。。。rd在有子文件(夹)的时候会自己显示“文件夹不是空的”空的直接被删除,重新md一个吧
作者: metoo 时间: 2008-8-22 07:40
CODE: [Copy to clipboard]
@echo off
set SrcFolder=C:\test\aaa
attrib -r -s -a -h %SrcFolder% >nul 2>nul
rd \\?\%SrcFolder% >nul || md %SrcFolder% && echo 目录是空的
pause
rd 可以处理畸形文件,问题是attrib怎么处理?文件短名可以么?有空再试了,而且短名在attrib可以的话dir/a 应该也可以了。。麻烦,上班了,懒得研究了
[ Last edited by metoo on 2008-8-22 at 07:41 AM ]
作者: 523066680 时间: 2008-8-22 09:04
仔细研究起来真麻烦捏……我还是回家耕田吧
[ Last edited by 523066680 on 2008-8-22 at 12:18 PM ]
作者: knoppix7 时间: 2008-8-22 10:13
RD的方法16楼刚说完..
作者: radem 时间: 2008-8-22 12:19
| Quote: |
Originally posted by HAT at 2008-8-20 08:13 PM:
汗水,加分搞错楼层了,明天补回来吧。 |
|
没错,在大哥的鼓励下,我会更努力的;)
作者: 523066680 时间: 2008-12-13 11:28
看了下老帖
好像可以这样
if exist a\*.* echo have
作者: HAT 时间: 2008-12-13 17:15 标题: Re 28楼
好像?你测试的结果如何呢?
作者: kissbill 时间: 2008-12-13 20:49
CODE: [Copy to clipboard]
@echo off
for /f "delims=" %%i in ('dir /b /a C:\test\aaa\*') do (
set m=%%i
if defined m (echo have&pause&goto :eof) else echo nohave
)
pause
老大们来看看这个。 当文件夹是空的时候,不输出nohave,怎么回事?
作者: ktv98 时间: 2008-12-14 22:28
| Quote: |
『第 2 楼』:
@echo off
for /f "delims=" %%i in ('dir /b test') do echo 文件夹不为空&goto :End
echo 文件夹为空
:End
pause
|
|
我在 C:\test\aaa\下随便创建一个文件或文件夹
运行这个批处理却显示:
找不到文件
文件夹为空.为什么还加分
作者: HAT 时间: 2008-12-14 22:30 标题: Re 31楼
把@echo off删除
测试结果贴出来看看
作者: ktv98 时间: 2008-12-14 22:33
| Quote: |
『第 32 楼』: Re 31楼
把@echo off删除
测试结果贴出来看看
|
|
C:\Documents and Settings\Administrator\桌面\新建文件夹>for /F "delims=" %i in (
'dir /b test') do echo 文件夹不为空 & goto :End
找不到文件
C:\Documents and Settings\Administrator\桌面\新建文件夹>echo 文件夹为空
文件夹为空
C:\Documents and Settings\Administrator\桌面\新建文件夹>pause
请按任意键继续. . .
[ Last edited by ktv98 on 2008-12-14 at 22:35 ]
作者: HAT 时间: 2008-12-14 22:39 标题: Re 33楼
这还看不出问题所在?建议重新阅读基础教程中关于相对路径和绝对路径的讲解。
| 欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) |
Powered by Discuz! 2.5 |