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

dav*_*ave 6 windows batch

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

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

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

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

@echo off

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

 for /d %%a in ("%mypath%\*") do (
    dir /b /s "%MYPATH%"
    pause
)
pause
Run Code Online (Sandbox Code Playgroud)

dbe*_*ham 8

这是一种方法。

从命令行:

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

使用批处理脚本:

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


Ben*_*n N 5

您可以使用 PowerShell!这个单线可以解决问题:

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

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

我们可以通过使用别名和缩写来压缩该行:

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

最后,您可以批量调用它:

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