Powershell - 检查目录是否为空的正确方法

Powershell - Correct Way of Checking if a directory is empty

在 powershell 中判断文件或文件夹是否为空的正确方法是什么?我遇到了这个 post 并尝试了第二个用户给出的示例,并且成功了。

现在,我一直在使用长度 属性 检查目录是否为空,如下所示:

(Get-ChildItem -Path "C:\Users\someUser\Downloads\" -Recurse).Length)

但是,file/folder 的字节数只有 return。我测试了长度 属性 并发现如果你在下载中放置一个空白文本 file/folder 那么长度 属性 就不会 return 正确的值。

你能用长度属性正确判断一个目录有files/folders个数吗?

试试这个,它会计算项目的数量:

Get-ChildItem -Path "C:\Users\someUser\Downloads\" -Recurse | Measure-Object

如果您想确定文件或文件夹是否为空,您可以使用以下命令:

对于一个文件:

If ((Get-Content C:\YouFile.txt) -eq $Null) {
    "The file is empty"
}

如果文件包含白色 space 它不会 return 为空,所以如果你想检查甚至白色 space 你可以使用以下内容:

If ([string]::IsNullOrWhiteSpace((Get-Content C:\YourFile.txt))) {
    "The file is empty"
}

文件夹:

If ((Get-ChildItem -Force C:\SomeFolder) -eq $Null) {
    "the Folder is empty"
}

另一种处理方法是使用 System.Io.Directory 中的基本静态方法 -- Directory.EnumerationFileSystemInfos() 并查看返回了多少对象(如果有)。请注意,FileSystemInfo 可以是目录或文件,因此它适用于您的情况。

[system.io.directory]::EnumerateFileSystemEntries("C:\temp")