如何使用批处理查找所有空目录

如何使用批处理查找所有空目录

如何使用批处理脚本查找所有空目录?

我的桌面上有一个名为“shows”的文件夹。里面有许多子目录。有些目录是空的,有些目录里有一些文件。

我如何循环遍历所有子文件夹并打印所有空文件夹?

以下是我尝试过的方法。问题是它会打印出所有文件夹...即使子文件夹不为空。

@echo off

SET "MYPATH=C:\Users\dave\Desktop\shows"

 for /d %%a in ("%mypath%\*") do (
    dir /b /s "%MYPATH%"
    pause
)
pause

答案1

这是一种方法。

从命令行:

for /r "C:\Users\dave\Desktop\shows" /d %F in (.) do @dir /b "%F" | findstr "^" >nul || echo %~fF

使用批处理脚本:

@echo off
setlocal
set "myPath=C:\Users\dave\Desktop\shows"
for /r "%myPath%" /d %%F in (.) do dir /b "%%F" | findstr "^" >nul || echo %%~fF

答案2

你可以使用 PowerShell!下面这行命令可以解决问题:

Get-ChildItem 'C:\Users\dave\Desktop\shows' -Recurse -Directory | Where-Object {[System.IO.Directory]::GetFileSystemEntries($_.FullName).Count -eq 0} | ForEach-Object {$_.FullName}

第一部分(以 开头Get-ChildItem)查找该文件夹的所有子目录。第二部分(Where-Object)筛选出那些没有任何文件系统条目(既没有文件也没有文件夹)的结果。最后,该ForEach-Object部分输出找到的文件夹的全名。

我们可以使用别名和缩写来大大缩短这句话的句子长度:

gci -Dir -r | ? {[IO.Directory]::GetFileSystemEntries($_.FullName).Count -eq 0} | % {$_.FullName}

最后,您可以从批处理中调用它:

powershell -command "gci -Dir -r | ? {[IO.Directory]::GetFileSystemEntries($_.FullName).Count -eq 0} | % {$_.FullName}"

相关内容