今天无意中游览到了Microsoft TechNet Powershell每周提示中的一篇文章,内容是关于如何用Powershell来提取目录下的空文件夹。具体英文原文地址如下:
Finding All the Empty Folders in a Directory Tree
http://www.microsoft.com/technet/scriptcenter/resources/pstips/may08/pstip0530.mspx
这是原文中所用的脚本代码,我仔细看了一下,发现了一个关键性错误。在进行最后第二次筛选时,单使用{GetFiles().Count -eq 0} 来
判断文件夹是否为空是不够正确及严谨的。
我们来测试一下原文的脚本代码,得到如下结果:
实际查看后,显然位于这个目录下的文件夹下并不为空(牵强的说只是该文件夹内不包含任意文件,但可以包含文件夹),还包含了其它文
件夹(这里指fs文件夹),这与我们所要求的目的并不一致。
问题出在哪里呢?就只我之前所说的{GetFiles().Count -eq 0}这一行导致了错误的结果。为了让Powershell正确筛选出目录下不包含空文件
以及空文件夹,我们必须在添加一个逻辑条件就是$_.GetDirectories()必须也为空,正确修改后的脚本如下:
取其中一个目录结果验证看看,终于得到正确的结果了!^.^