2014-02-18 77 views
1

我想写一个非常简单的小批处理脚本来确定目录是否包含任何有效的文件,如果它然后GOTO复制命令或完成。然而,即使当我知道目录T:是空的,以下内容仍然认为那里有一个文件。它可能是一些隐藏或系统文件,我怎么能忽略这些文件?批处理文件 - 如果存在*。*

IF EXIST T:\*.* goto STAGE1 
goto FINISH 

我已经适应这是专门找* .txt文件,但是我不能确定新的文件将永远是一个特别的类型,因此我需要剧本来寻找任何类型的文件前一个批处理文件。有没有我可以使用的开关?

回答

1
dir /a-d "t:\*.*" >nul 2>nul && goto stage1 || goto finish 

如果dir命令没有找到指定的文件(我排除了子文件夹),它将设置错误级别1。如果没有错误级别转到阶段1,否则,转至完成

编辑 - 为了处理子目录的情况下,不包括隐藏的人

dir /a-d "t:\" >nul 2>nul && goto stage1 
for /d /r "t:\" %%a in ("*") do (dir /a-d "%%~fa\*" >nul 2>nul && goto stage1) 
goto finish 

将开始检查指定的文件夹中,如果没有找到文件,重复前面命令用于递归列表中的每个目录。如果找到任何文件,则转到stage1。如果命令完成并且下一行到达,则转到完成。

+0

直到客户更改了目标帖子并决定删除该目录中的文件夹,才开始工作。我将如何包含子文件夹选项? (不包括系统文件夹) – SuperSub

+0

@SuperSub,“系统文件夹”是什么意思? –

+0

隐藏的文件夹。 – SuperSub