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

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

Ответить
Настройки темы
CMD/BAT - [решено] Копирование папок с файлами с сохранением директорий по маскам

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


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

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


Изменения
Автор: buntr
Дата: 21-06-2018
Всем привет. Нужно скопировать с сетевого диска "R" на диск "D:\1" все папки содержащие в названии ключевые слова "КМ" и "КЖ" со всеми подпапками и файлами, которые есть в этих папках независимо от их названия. При копировании необходимо сохранить директории.
Код есть и он работает, но не совсем правильно, копируются только папки содержащие файлы с масками "КМ" и "КЖ", а мне нужно копировать папку с вложенными файлами по данной маске.
Код: Выделить весь код
SETLOCAL EnableDelayedExpansion
for /f %%i in ('dir /b/s/ad "!r:\" ^| findstr /i "*КМ* *КЖ*"') do (
   set "d=%%i"
   xcopy /q/s/y/r/h/z "!d!" "!r:\!\"
   )
xcopy /q/s/y/r/h/z "r:\*КМ*" "d:\1\"
xcopy /q/s/y/r/h/z "r:\*КЖ*" "d:\1\"

Отправлено: 07:31, 21-06-2018

 

Ветеран


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

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


Цитата buntr:
Не работает, окно сразу закрывается. »
Работает. Открываете командную строку и исполняете пакетный файл в ней.

Цитата buntr:
Прикладываю. »
Ну, и где в именах каталогов:
Код: Выделить весь код
Архив
Технический архив
Цитата buntr:
…содержащие в названии ключевые слова "КМ" и "КЖ" »
?!

Отправлено: 12:33, 21-06-2018 | #11



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

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


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


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

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


Цитата Iska:
Ну, и где в именах каталогов: »
Может я не совсем правильно описал задачу, но папки с наименованиями с ключевыми словами КМ КЖ находятся глубже в директориях диска R. Наверно в коде сначала необходимо выполнить поиск таких папок потом уже копирование.

Отправлено: 12:37, 21-06-2018 | #12


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


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

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


Изображения
Тип файла: png Снимок111.PNG
(75.2 Kb, 6 просмотров)

Цитата megaloman:
Я неверно понял задачу: считал, что ваши КМ КЖ папки только в корне R:
Попробуйте так: »
Нехочет...

Отправлено: 12:40, 21-06-2018 | #13


Ветеран


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

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


Цитата buntr:
но папки с наименованиями с ключевыми словами КМ КЖ находятся глубже в директориях диска R »
На каком именно уровне вложенности они находятся?

Отправлено: 12:44, 21-06-2018 | #14


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


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

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


Цитата Iska:
На каком именно уровне вложенности они находятся? »
Уровни совершенно разные...от 2 до 10 и более вложений.

Друзья, подождите! Кажется процесс идет, надо было просто подождать.

Отправлено: 12:47, 21-06-2018 | #15


Ветеран


Contributor


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

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


Этот вариант надёжнее, но он работать у Вас скорее всего не будет: похоже, нет указанных папок, так как dir даже не выходит на Echo для отображения имени папки. Возможно, дело в именах папок: допустим, Вы считаете, что К -русская, а на самом деле -K -латинская. У меня работает с разными уровнями вложенности, ИМХО, это для моего кода не принципиально, лишь бы длина полного имени файла была не слишком большая
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=r:"
	Set "MaskIn="*КЖ*.*" "*КМ*.*""
 
	Set "BoxOut=Z:\Box_Out" 

	Pushd "%BoxIn%\" &&(
	FOR /F "usebackq delims=" %%d IN (`2^>nul Dir %MaskIn% /B /S /A:D`) DO (
		Echo %%d
		>nul xcopy "%%d\*.*" "%BoxOut%%%~pnxd\" /E /Q /Y /R /H /Z /D
	)
	Popd)
pause
GoTo :Eof
Попробуйте проделать
dir R:\*КЖ* R:\*КМ* /B /S /A:D >D:\txt2.txt
Вы увидите в файле D:\txt2.txt искомые папки?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 21-06-2018 в 13:07.

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

Отправлено: 13:01, 21-06-2018 | #16


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


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

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


Цитата megaloman:
Этот вариант надёжнее »
Ваш предыдущий код работает, просто нужно подождать минут 5 и процесс начинается.
Цитата megaloman:
Попробуйте проделать
dir R:\*КЖ* R:\*КМ* /B /S /A:D >D:\txt2.txt
Вы увидите в файле D:\txt2.txt искомые папки? »
Проделал, да, искомые папки находит. Благодарю.

Еще один вопрос, могу ли я добавить новые ключевые фразы для поиска?

Отправлено: 13:27, 21-06-2018 | #17


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата buntr:
нужно подождать минут 5 »
хмм... попробуйте powershell:
Код: Выделить весь код
$src='R:\'
$dst='D:\1'
$regexp = '(кж|км)[^\\]*$'

if (!(test-path $dst -patht container)){md $dst|out-null}
copy ((dir "$src\*" -dir -rec -force) -match $regexp).fullname $dst -rec -force

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


Отправлено: 13:55, 21-06-2018 | #18


Ветеран


Contributor


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

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


buntr,
Цитата buntr:
могу ли я добавить новые ключевые фразы для поиска? »
Можете. Например
Код: Выделить весь код
Set "MaskIn="*КЖ*.*" "*КМ*.*" "*kuku*" "тра ля ля-????-*""

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 14:43, 21-06-2018 | #19


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


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

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


Друзья спасибо, задача выполнена, вы настоящие гении!
Отдельную благодарность выражаю: megaloman и Iska

Отправлено: 07:03, 22-06-2018 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Поиск файла по нескольким маскам и копирование в папку miti_cmd Скриптовые языки администрирования Windows 9 16-01-2016 20:40
CMD/BAT - [решено] Бекап файлов по маске с сохранением директорий denisz Скриптовые языки администрирования Windows 3 16-09-2013 13:13
CMD/BAT - Копирование только самых новых файлов в папках с сохранением структуры папок hoh Скриптовые языки администрирования Windows 3 03-01-2012 10:22
CMD/BAT - [решено] Копирование папок и файлов по маскам dorosa Скриптовые языки администрирования Windows 10 28-01-2011 14:18
CMD/BAT - [решено] как осуществить копирование по маске с сохранением структуры папок seriych Скриптовые языки администрирования Windows 3 29-05-2010 17:10




 
Переход