PDA

Показать полную графическую версию : Помогите написать скрипт поиска по содержимому и последующему копированию


kot900
07-10-2018, 00:41
Есть каталог, в этом каталоге много каталогов с файлами и каталогами. Требуется поиск по содержимому в файлах и при совпадении копировать каталог со всем вложенным в другой каталог.
Отблагодарю

Iska
07-10-2018, 01:07
поиск по содержимому в файлах »
Что за файлы? Кодировка файлов, если они текстовые?

kot900
07-10-2018, 01:30
utf-8
текстовые

т.е есть много каталогов, в их корне лежит текстовый файл info.txt, если он содержит текст text1 то весь каталог с содержимым скопировать в отдельный каталог. в итоге должно быть отсортированны каталоги содержащие файл info.txt с определенным содержимым

Iska
07-10-2018, 04:38
utf-8 »
kot900, в том, что ищем, может содержаться кириллица? Файлы с BOM или без BOM?

kot900
07-10-2018, 08:12
кириллицы нет. не знаю что такое бом, но это просто тектовый файл

YuS_2
07-10-2018, 11:30
kot900,
Глубина вложенности каталогов? Совпадение имен?
В том смысле, возможна ли ситуация, что нужный каталог находится на три уровня ниже корневого, а затем найдется ещё один каталог, скажем на два уровня ниже корневого, но имеющий такое же имя и тоже содержащий info.txt с текстом text1. Какие действия? Перезаписать целевой каталог слив их в один или переименовать? Т.е. могут потребоваться дополнительные проверки...

Iska
07-10-2018, 11:58
это просто тектовый файл »
Тогда упакуйте один из таких файлов в архив и приложите к сообщению.

kot900
07-10-2018, 12:34
вот154420

Iska
07-10-2018, 13:14
«Брюки превращаются, брюки превращаются…»™

kot900, а почему Вы решили, что это UTF-8? BOM нет, символов за пределами первой половины таблицы ASCII нет, почему UTF-8-то?!

Итак:

есть некий «корневой» каталог;
в нём расположено N каталогов;
в каждом из этих N каталогов находится файл «information.log», а также прочие файлы и каталоги, нас не интересующие;
мы должны пройтись по каждому из N каталогов, осуществив поиск некоей искомой подстроки text1 в файле «КорневойКаталог\КаталогNN\information.log»;
если искомая подстрока text1 будет найдена в файле «КорневойКаталог\КаталогNN\information.log», требуется скопировать «КаталогNN» под тем же именем из «КорневойКаталог» в некий каталог назначения «КаталогНазначения».
Так?

@echo off
setlocal enableextensions enabledelayedexpansion

set sRootFolder=C:\Мои проекты\0208
set sDestFolder=C:\Мои проекты\0209
set sFileName=information.log
set "sText4Find=wininit.exe"

if exist "%sRootFolder%\." (
if exist "%sDestFolder%\." (
for /d %%i in ("%sRootFolder%\*.*") do (
echo ===================================
echo [%%~i]
if exist "%%~i\%sFileName%" (
>nul 2>&1 find.exe /i "%sText4Find%" "%%~i\%sFileName%" && (
echo Found text [%sText4Find%] in file [%%~i\%sFileName%].
2>nul md "%sDestFolder%\%%~nxi"
echo -----------------------------------
xcopy.exe /e /c /f /y "%%~i" "%sDestFolder%\%%~nxi\"
echo -----------------------------------
) || (
echo Not found text [%sText4Find%] in file [%%~i\%sFileName%].
)
) else (
echo Can't find file [%sFileName%] in folder [%%~i].
)
echo.
)
) else (
echo Can't find destination folder [%sDestFolder%].
exit /b 2
)
) else (
echo Can't find 'root' folder [%sRootFolder%].
exit /b 1
)

endlocal
exit /b 0


https://i.imgur.com/bLZdLSp.png

kot900
07-10-2018, 15:31
Да. огромное спасибо. Всё работает как надо




© OSzone.net 2001-2012