Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Нужен батник для сканирования папок и записи результатов в файл

Ответить
Настройки темы
CMD/BAT - [решено] Нужен батник для сканирования папок и записи результатов в файл

Пользователь


Сообщения: 87
Благодарности: 0

Профиль | Отправить PM | Цитировать


Прошу помочь в такой проблеме:
Есть набор папок, в каждой из которых расположены разные файлы (txt/doc/djvu/pdf/..). Нужно, с помощью батника просканировать

эти папки и результаты получить в виде текстовых(html) файлов (по одному на каждую папку и помещенные в отдельную новую

папку) с таким содержимым:

<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"><title>Название папки</title>
</head><body>
<h2>Название папки</h2>
<ul>
<li><a href="filepath/filename1.ext">filename1</a></li>
<li><a href="filepath/filename2.ext">filename2</a></li>
..........
<li><a href="filepath/filenameN.ext">filenameN</a></li>
</ul>
</body></html>


P.S.
1. Папки и файлы в приведённом шаблоне на самом деле порядковых номеров не имеют, а имеют различные названия. Их нумерация

приведена только для наглядности.
2. Все папки содержатся в одном общем каталоге
3. возможна иерархия вложений в этих папках.
4. Пути (и ссылки) предполагаются относительными

Отправлено: 00:31, 24-08-2013

 

Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Код: Выделить весь код
@echo off
setlocal

1>nul chcp 1251

subst n: "C:\Path\To\RootDir" 
pushd n:

for /f "tokens=*" %%i in (' dir /b /s /ad ') do (

    pushd "%%i"
    
    for /f "tokens=*" %%j in (' dir /b /a-d ') do call:rep "%%~nxi" "%%j"

    1>>"dir_%%~nxi.htm" (

        echo ^</ul^>
        echo ^</body^>^</html^>    
    
    )
    
    popd

)

md dir_htm

for /f "tokens=*" %%i in (' dir /b /s dir_*.htm ') do move "%%i" dir_htm

popd
subst n: /d
goto:eof

:rep

if not exist "dir_%~1.htm" 1>"dir_%~1.htm" (

    echo ^<html^>^<head^>
    echo ^<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"^>
    echo ^<title^>%~1^</title^>
    echo ^</head^>^<body^>
    echo ^<h2^>%~1^</h2^>
    echo ^<ul^>

)

1>>"dir_%~1.htm" echo ^<li^>^<a href="..%~pnx2"^>%~2^</a^>^</li^>
Где "C:\Path\To\RootDir" корневая директория для создания htm-отчетов.

Последний раз редактировалось Foreigner, 24-08-2013 в 09:13.

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:24, 24-08-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 87
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо огромное, отлично работает!

Отправлено: 11:25, 24-08-2013 | #3


Пользователь


Сообщения: 87
Благодарности: 0

Профиль | Отправить PM | Цитировать


Но вообще говоря есть некоторые проблемы.
У меня WinXP SP3
Я помещаю батник в сканируемую папку, но он ничего не создает в созданной мной папке "C:\Path\To\RootDir"
Но если уничтожить "C:\Path\To\RootDir" то батник создает папку "dir_htm" в сканируемой папке и потом нужно перенести ее в корневой каталог и тогда ссылки работают. Но в некоторых случаях батник не создает папку, а создает файлы в подпапках и их тоже требуется перемещать в корень.
Но вобщем конечно работает, я колоссально продвинулся в деле каталогизации своей библиотеки и остальное доделаю с помощью программ замены символов.
Еще раз спасибо!!!

Отправлено: 13:10, 24-08-2013 | #4


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Цитата ruslaw:
Цитата:
"C:\Path\To\RootDir" »
Батник может лежать где-угодно, а это просто пример, поменяйте путь на нужный вам, тот который является корнем для просматриваемых подкаталогов, например на "C:\Program Files" или какой-нибудь D:\Music

Последний раз редактировалось Foreigner, 24-08-2013 в 13:42.


Отправлено: 13:35, 24-08-2013 | #5


Пользователь


Сообщения: 87
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо, попробую

Отправлено: 14:33, 24-08-2013 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Нужен батник для сканирования папок и записи результатов в файл

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Батник для чтения/записи djalin Скриптовые языки администрирования Windows 9 11-03-2012 17:07
CMD/BAT - нужен батник для сканирования папки TuFED Скриптовые языки администрирования Windows 6 25-08-2011 23:06
CMD/BAT - [решено] нужен батник для чистки Temp. срочною white-fog9 Скриптовые языки администрирования Windows 1 29-05-2011 15:19
CMD/BAT - [решено] Нужен батник для сканирования папок и записи результатов в файл Nun-Nun Скриптовые языки администрирования Windows 7 22-09-2010 15:23
CMD/BAT - [решено] нужен батник который бы пинговал диапазон ip и записывал результат в файл dvassilyev Скриптовые языки администрирования Windows 7 08-05-2009 14:33




 
Переход