Компьютерный форум 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=337052)

kot900 07-10-2018 00:41 2834789

Помогите написать скрипт поиска по содержимому и последующему копированию
 
Есть каталог, в этом каталоге много каталогов с файлами и каталогами. Требуется поиск по содержимому в файлах и при совпадении копировать каталог со всем вложенным в другой каталог.
Отблагодарю

Iska 07-10-2018 01:07 2834793

Цитата:

Цитата kot900
поиск по содержимому в файлах »

Что за файлы? Кодировка файлов, если они текстовые?

kot900 07-10-2018 01:30 2834796

utf-8
текстовые

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

Iska 07-10-2018 04:38 2834801

Цитата:

Цитата kot900
utf-8 »

kot900, в том, что ищем, может содержаться кириллица? Файлы с BOM или без BOM?

kot900 07-10-2018 08:12 2834803

кириллицы нет. не знаю что такое бом, но это просто тектовый файл

YuS_2 07-10-2018 11:30 2834820

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

Iska 07-10-2018 11:58 2834826

Цитата:

Цитата kot900
это просто тектовый файл »

Тогда упакуйте один из таких файлов в архив и приложите к сообщению.

kot900 07-10-2018 12:34 2834833

Вложений: 1
вотФайл 154420

Iska 07-10-2018 13:14 2834838

«Брюки превращаются, брюки превращаются…»™

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


kot900 07-10-2018 15:31 2834854

Да. огромное спасибо. Всё работает как надо


Время: 23:12.

Время: 23:12.
© OSzone.net 2001-