使用批处理找到目录下大小为0的特定文件夹。

问题描述 投票:1回答:2

谁能帮帮忙,如何用批处理找到目录下大小为0的特定文件夹,谢谢。

一个父文件夹里有很多文件夹,有些文件夹里面有文件,有些文件夹是空的,我想用批处理文件找出空文件夹的名称。我想用批处理文件找出空的文件夹的名称,谁能帮帮我,谢谢。

batch-file
2个回答
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
投票

以下是 思想,它利用了 可能会提供你需要的信息。

我说可能,是因为你没有说明你认为什么是空的子文件夹,或者大小为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 无论你选择哪个例子。(最好放在单引号之间)

© www.soinside.com 2019 - 2024. All rights reserved.