Single Post |
Topic: Как найти папки, не содержащие определённых файлов |
Author |
Message |
Ciber SLasH

|
Posted: Wed Jan 16, 2013 18:54 Post subject: |
|
|
Скрипт заработал (я ошибся в указании путей)
Code: | @echo off
setlocal ENABLEEXTENSIONS
chcp 1251 > nul
set input="%~dp0test.txt"
set output="%~dp0--.lst"
:: Archives
set "mask=*.zip *.rar *.7z *.tgz *.gz *.tar *.bz2"
:: IMG
set "mask=%mask% *.iso *.nrg"
:: Graph
set "mask=%mask% *.jpg *.jpeg *.jp2 *.jpc *.gif *.png *.psd *.tif *.pcx *.tga *.bmp"
:: HTML
set "mask=%mask% *.htm *.html *.shtm *.shtml *.mht*"
:: Audio
set "mask=%mask% *.mp3 *.flac *.ape *.wma"
:: Video
set "mask=%mask% *.avi *.mpg *.mpeg *.m2v *.mpe *.asf *.mov *.rm"
:: Docs
set "mask=%mask% *.txt *.doc* *.xls* *.ppt* *.pdf"
if not [%input%]==[""] (
if exist %input% (
copy nul %output% > nul
for /f "usebackq delims==" %%i in (%input%) do (
echo -----
echo Scan: %%i
echo -----
pushd "%%i"
dir /b /a-d /s %mask% > nul 2>&1 || echo(%%i>>%output%
for /d /r %%j in (*) do (
REM title %%j
echo %%j
dir /s /b /a-d %mask% > nul 2>&1 || echo(%%j\>>%output%
rem >nul 2>&1 dir /s /b /a-d %mask% || >>%output% echo(%%j\
)
popd
)
) else (
echo Error: file [%input%] not found!
)
) else (
echo Usage: %~nx0 ^<File-list^>
)
|
test.txt
Code: |
C:\RECYCLER\
C:\tmp\
|
Добавлено спустя 55 минут:
С первым вопросом разобрался:
>nul 2>&1 dir /b/a-d/s %mask% || >>"%output%" echo(%%$\
Выполнить поиск файлов по всем вложенным каталога, начиная с текущего, соответствующих маске (при этом перенаправление ошибок и вывода идёт на ус-во null, чтобы не было никакого вывода и установился флаг %ERRORLEVEL%). Если файлов таких нет, то выполняется вторая команда после || которая записывает в выходной файл путь.
По идее можно переписать так:
dir /b/a-d/s %mask% > nul 2>&1 || echo(%%$\>>"%output%"
Все вопросы решены, тему можно закрывать  |
|
|
|
 |
|
Powered by phpBB © 2001, 2005 phpBB Group
|