谁能帮帮忙,如何用批处理找到目录下大小为0的特定文件夹,谢谢。
一个父文件夹里有很多文件夹,有些文件夹里面有文件,有些文件夹是空的,我想用批处理文件找出空文件夹的名称。我想用批处理文件找出空的文件夹的名称,谁能帮帮我,谢谢。
这个脚本扫描目标文件夹,并返回目标文件夹内所有空子文件夹的UNC路径。
@echo off
setlocal EnableDelayedExpansion
REM This script scans the target folder and returns the UNC paths of all empty subfolders within the target folder.
title Looking for empties, please wait!
cd "%~dp0"
cls
if "%~1" == "" (
echo ERROR: No folder was specified! You gotta tell me where to look for empties!
echo Please drag-and-drop a folder onto the icon for this script.
pause
exit /b
)
if not exist "%~dpn1" (
echo ERROR: The folder you told me to scan doesn't seem to exist!
pause
exit /b
)
set "target=%~dpn1"
echo Scanning: %target%
echo.
REM Grab each subfolder for checking.
for /f "tokens=*" %%a in ('dir "%~dpn1" /s /b /a:d') do (call :checkForBlanks "%%a")
echo.
echo Done.
title Done.
pause
exit /b
:checkForBlanks
REM We've been given a folder. We must check if it's empty.
set "folder=%~1"
set "scanned=!folder:%target%=!"
title Looking for empties: %scanned:&=^&%
set exist=
for /f %%a in ('dir "%~1" /b') do (set "exist=%%a" & goto :found)
:found
if "%exist%" == "" echo EMPTY: %scanned:&=^&%
goto :eof
以下是 批处理文件 思想,它利用了 权力壳 可能会提供你需要的信息。
我说可能,是因为你没有说明你认为什么是空的子文件夹,或者大小为0的文件夹。
下面的单行批处理文件的例子应该可以工作,不管你安装的是什么文件。powershell.exe
版本。
@(For /F "Delims=" %%G In ('%__AppDir__%WindowsPowerShell\v1.0\powershell.exe -NoP "(GCI -Rec|?{$_.PSIsContainer -Eq $True})|?{$_.GetFileSystemInfos().Count -Eq 0}|Select -Exp FullName" 2^>NUL')Do @Echo/%%G)&Pause
如果你使用的是最新版本的... powershell.exe
也许下面的例子对你来说更合适。
@(For /F "Delims=" %%G In ('%__AppDir__%WindowsPowerShell\v1.0\powershell.exe -NoP "GCI -AD -S|?{$_.GetFileSystemInfos().Count -Eq 0}|Select -Exp FullName" 2^>NUL')Do @Echo/%%G)&Pause
这两个例子都被设计为从当前目录递归,如果你想直接将基本目录插入for循环,那么就在下面的 GCI
无论你选择哪个例子。(最好放在单引号之间)