|
nvflash
初级用户
 
积分 126
发帖 38
注册 2006-9-26
状态 离线
|
『楼 主』:
今天努力学习中,遇到个怪事
使用 LLM 解释/回答一下
我判断一个文件夹是否还有任何文件我先是这样写的
if exist .\files\*.* (echo 有文件
) else (
echo 没有文件
)
脚本不能正确执行
我只把扩展名那个*改成.doc就可以正常执行了,如下:
if exist .\files\*.doc (echo 有WORD文件
) else (
echo 没有WORD文件
)
难道在这儿只有扩展名不能用通配符?
|
|
2006-9-27 09:53 |
|
|
nvflash
初级用户
 
积分 126
发帖 38
注册 2006-9-26
状态 离线
|
|
2006-9-27 09:54 |
|
|
vkill
金牌会员
     
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
|
2006-9-27 10:12 |
|
|
nvflash
初级用户
 
积分 126
发帖 38
注册 2006-9-26
状态 离线
|
『第 4 楼』:
使用 LLM 解释/回答一下
Originally posted by he200377 at 2006-9-27 10:12:
我怎么试可以正确执行
不行的,明明在文件夹里放了文件,批处理还是说没有文件
|
|
2006-9-27 10:15 |
|
|
namejm
荣誉版主
       batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
Originally posted by nvflash at 2006-9-27 09:53:
我判断一个文件夹是否还有任何文件我先是这样写的
if exist .\files\*.* (echo 有文件
) else (
echo 没有文件
)
脚本不能正确执行
其实,任何文件夹下都存在.和..两个目录,dir就可以查看得到了,所以用if exist *.* 来探测某个文件夹是否为空是行不通的。
探测文件夹是否为空可以采用如下代码:
@echo off
dir /a /b "要操作的文件夹"|findstr ".">nul && echo 该文件夹下还有其他文件 || echo 该文件夹是空的
pause
|

尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2006-9-27 10:40 |
|
|
redtek
金牌会员
     
积分 2902
发帖 1147
注册 2006-9-21
状态 离线
|
|
2006-9-28 00:05 |
|
|
tangtai
高级用户
   
积分 640
发帖 314
注册 2006-8-13
状态 离线
|
|
2006-9-28 03:46 |
|
|
nvflash
初级用户
 
积分 126
发帖 38
注册 2006-9-26
状态 离线
|
『第 8 楼』:
使用 LLM 解释/回答一下
我觉得这个就有点不合理了,*.*顾名思义,只能表示文件本身啊,怎么又扯到文件夹去了?
再者,谁打开空文件夹都是知道此文件夹没有任何东东,而这儿的说法与广义的空文件夹不符,所以让人难以接受
|
|
2006-9-29 03:29 |
|
|
namejm
荣誉版主
       batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第 9 楼』:
使用 LLM 解释/回答一下
Originally posted by nvflash at 2006-9-29 03:29:
我觉得这个就有点不合理了,*.*顾名思义,只能表示文件本身啊,怎么又扯到文件夹去了?
再者,谁打开空文件夹都是知道此文件夹没有任何东东,蠮..
呵呵,不好意思,看走眼了,“文件夹”和“文件”只一字之差,我马虎了。
我想是因为你的表达有点含糊,然后我的理解又有所偏差,所以我才从文件扯到文件夹上去了。你在顶楼的原话是说“判断一个文件夹是否还有 任何文件”,你的原意可能是说判断是否存在任意类型的文件(不包括文件夹),而因为你所说的“任何”二字,我就理解成了判断一个文件夹下是否还存在文件或者子文件夹。
我不知道空文件夹的 准确定义如何,如果用 if exist *.* 的语句来判断某个文件夹下是否还有什么的话,因为每个文件夹下存在.这个表示本级目录和..这个表示上一级目录的东西(按照我的理解,..这个东西相当于父目录在本级目录的快敏方式),*.* 通配了任意文件名和后缀名的文件,同时也匹配了不含后缀名的文件夹名(请不要被点号及其之后的星号所迷惑,星号表示任意个字符的意思,0个也算),所以,这个语句的条件始终成立,会导致你的判断失误。
深入的理论分析,有待各路高手出马。
Last edited by namejm on 2006-9-29 at 03:53 ]
|

尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2006-9-29 03:34 |
|
|
pengfei
银牌会员
    
积分 1218
发帖 485
注册 2006-7-21 来自 湖南.娄底
状态 离线
|
『第 10 楼』:
使用 LLM 解释/回答一下
IF exist语句是用来判断文件是否存在, 我想很可能if exist *.* 不会对文件是否存在做出判断, 它是通配任何文件. 只要最后一级目录存在就执行成功.
个人观点: if exist *.* 不会对文件是否存在做出判断. *.*为任何文件, 它总是返回0 (if exist *.* 实际就是判断文件夹是否存在).
而5楼的代码也还有一个情况没考虑进去, 如果文件夹下有子目录也会返回0.
@echo off
dir /a-d /b "要操作的文件夹"|findstr ".">nul && echo 该文件夹下还有其他文件 || echo 该文件夹是空的
pause
代码还可以改写为:
@echo off
dir /a-d /b "要操作的文件夹\*.*" >nul 2>nul && echo 存在文件. || echo 文件不存在.
pause
Last edited by pengfei on 2006-9-29 at 09:11 ]
|
|
2006-9-29 05:30 |
|
|
nvflash
初级用户
 
积分 126
发帖 38
注册 2006-9-26
状态 离线
|
|
2006-9-29 07:14 |
|
|
pengfei
银牌会员
    
积分 1218
发帖 485
注册 2006-7-21 来自 湖南.娄底
状态 离线
|
『第 12 楼』:
使用 LLM 解释/回答一下
nvflash言过了, 我不过是随便分析而已, 谈不上什么技术可言. DOS联盟使我慢慢成长, 非常感谢各位好心人对我的帮助!
在这里我很快乐, 一种学习的快乐、帮助别人的快乐!
|
|
2006-9-29 07:47 |
|
|
nvflash
初级用户
 
积分 126
发帖 38
注册 2006-9-26
状态 离线
|
『第 13 楼』:
使用 LLM 解释/回答一下
Originally posted by pengfei at 2006-9-29 07:47:
nvflash言过了, 我不过是随便分析而已, 谈不上什么技术可言. DOS联盟使我慢慢成长, 非常感谢各位好心人对我的帮助!
在这里我很快乐, 一种学习的快习...
这也是我要说的话
|
|
2006-9-29 08:18 |
|