найти указанные c папки с размером 0 в каталоге с помощью пакета - PullRequest
1 голос
/ 29 апреля 2020

Может кто-нибудь помочь, как найти указанные c папки с размером 0 в каталоге, используя пакет? спасибо.

В родительской папке много папок, в некоторых из них есть файлы, а в другой нет данных. Я хотел бы узнать название пустых папок, используя командный файл. может кто-нибудь помочь? спасибо

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Следующая идея , которая использует , может предоставить требуемую информацию.

Я говорю, может, потому что вы не уточнили, что вы считаете пустую подпапку или папку размером 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

Оба примера предназначены для рекурсии из текущего каталога, если вы sh вставьте базовый каталог непосредственно в for l oop, а затем используйте его сразу после GCI в любом выбранном вами примере (предпочтительно заключить в одинарные кавычки)

0 голосов
/ 29 апреля 2020

Этот сценарий сканирует целевую папку и возвращает пути UN C для всех пустых подпапок в целевой папке.

@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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...