Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   запись в лог путей к пустым папкам (http://forum.oszone.net/showthread.php?t=279331)

lovehate 16-03-2014 17:04 2324382

запись в лог путей к пустым папкам
 
Добрый день!

Столкнулся с проблемой в создании скрипта, который проверит папку D:\OB и все её подпапки (4 уровня вложенности) на наличие пустых папок, выведя пути к пустым папкам в лог log.txt

Нашел следующий скрипт в соседней теме, но он делает обратную задачу, показывает файлы в папках < определенного размера, при этом пустые папки в лог не выводит. Может его можно переделать под данный запрос?

@echo off
setlocal enableextensions enabledelayedexpansion

set sRootFolder=D:\OB
set /a lLimit = 0.0005*1^<^<20

if exist "%sRootFolder%\." (
>"poisk.txt" (
for /f "usebackq delims=" %%i in (
`dir "%sRootFolder%\*.*" /b /s /a:-d`
) do if %%~zi gtr %lLimit% echo %%i %%~zi )
) else (
echo Can't find root folder [%sRootFolder%].
exit /b 1
)

endlocal
exit /b 0

Georgio 17-03-2014 18:09 2324930

Цитата:

Цитата lovehate
Может его можно переделать под данный запрос? »


Этот скрипт нельзя переделать под Ваш запрос, можно лишь написать свой скрипт.

Код:

@echo off
chcp 1251>nul
set directory_for_testing=D:\OB
(
for /d /r "%directory_for_testing%" %%i in (*) do (
  for /f %%j in ('dir "%%i" /b 2^>nul') do (
  set /a n+=1
  )
  if not defined n (
  echo %%i
) else (
  set n=
  )
 )
)>"log.txt"
exit /b


Iska 18-03-2014 00:42 2325029

Код:

@echo off
setlocal enableextensions enabledelayedexpansion

>"log.txt" (
        for /r "E:\Песочница\0367\02" %%i in (.) do (
                dir /b /a "%%~i" | find.exe /v "" 2>nul 1>&2 || echo %%~fi
        )
)

endlocal
exit /b 0


Georgio 18-03-2014 04:47 2325065

Ещё вариант:

Код:

@echo off
chcp 1251>nul
set directory_for_testing=D:\OB
(
for /f "tokens=*" %%i in ('dir "%directory_for_testing%" /ad /b /s') do (
 for /f %%j in ('tree "%%i" /a /f^| find /c /v ""') do (
  if %%j==5 (
  for /f %%k in ('tree "%%i" /a /f') do (
    set /a n+=1
    )
  call echo %%n%%| >nul findstr /x 4&& echo %%i
  set n=
  )
  )
 )
)>log.txt
exit /b



Время: 18:30.

Время: 18:30.
© OSzone.net 2001-