Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - Помогите написать скрипт поиска по содержимому и последующему копированию

Новый участник


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

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


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

Отправлено: 00:41, 07-10-2018

 

Ветеран


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

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


Цитата kot900:
поиск по содержимому в файлах »
Что за файлы? Кодировка файлов, если они текстовые?

Отправлено: 01:07, 07-10-2018 | #2



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

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


Новый участник


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

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


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

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

Отправлено: 01:30, 07-10-2018 | #3


Ветеран


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

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


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

Отправлено: 04:38, 07-10-2018 | #4


Новый участник


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

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


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

Отправлено: 08:12, 07-10-2018 | #5


Аватара для YuS_2

Crazy


Contributor


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

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


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

-------
scio me nihil scire. Ѫ


Отправлено: 11:30, 07-10-2018 | #6


Ветеран


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

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


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

Отправлено: 11:58, 07-10-2018 | #7


Новый участник


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

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



вотinformation.log

Отправлено: 12:34, 07-10-2018 | #8


Ветеран


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

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


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

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
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:14, 07-10-2018 | #9


Новый участник


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

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


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

Отправлено: 15:31, 07-10-2018 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - помогите написать на javascript код для поиска и фильтрации в тхт файле строк. spiritmen Скриптовые языки администрирования Windows 0 06-02-2015 23:42
Помогите написать скрипт MkZ Программирование в *nix 2 16-03-2014 11:02
CMD/BAT - Помогите написать скриптик, решющий задачи поиска и удаления по таким критериям sponylum Скриптовые языки администрирования Windows 2 12-02-2011 12:02
Delphi - Помогите написать программу для поиска суммы двух знаком двухзначного числа. highlander5 Программирование и базы данных 6 28-01-2011 12:38
Помогите написать скрипт!!! Sergei Antoshkin Вебмастеру 1 13-03-2003 18:22




 
Переход