如何使用批处理脚本查找所有空目录?
我的桌面上有一个名为“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)
这是一种方法。
从命令行:
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)
您可以使用 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)
| 归档时间: |
|
| 查看次数: |
11124 次 |
| 最近记录: |