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

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

 

Ветеран


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

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


Нудно на диске D повторить структуру каталогов с R, но содержимое оставить только в директориях КМ/КЖ?
Или найти такие директории и покидать их в корень D ?

Отправлено: 10:04, 21-06-2018 | #2



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

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


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


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

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


Цитата Busla:
Нудно на диске D повторить структуру каталогов с R, но содержимое оставить только в директориях КМ/КЖ?
Или найти такие директории и покидать их в корень D ? »
Первое, необходимо повторить на диске D структуру каталогов с R но содержимое оставить только в директориях с КМ/КЖ.
Одно но, повторять структуру каталогов нужно только не для всех папок, а только для копируемых т.е. для папок содержащих в названии буквы КЖ/КМ.
Мой код это делает, но ищет не папки, а файлы...

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


Ветеран


Contributor


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

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


Код: Выделить весь код
@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 /A:D`) DO (
		Echo %%d
		>nul xcopy "%BoxIn%\%%d\*.*" "%BoxOut%\%%d\" /E /Q /Y /R /H /Z
	)
	Popd
pause
GoTo :Eof

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


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


Ветеран


Contributor


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

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


buntr, попробуйте так:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=r:\
set sDestFolder=d:\1
set sMask="*КМ*.*" "*КЖ*.*"

if exist "%sSourceFolder%\." (
	if exist "%sDestFolder%\." (
		pushd "%sSourceFolder%" && (
			for /f "usebackq delims=" %%i in (`2^>nul dir /b /a:d %sMask%`) do (
				if not exist "%sDestFolder%\%%~i\." md "%sDestFolder%\%%~i"
				xcopy.exe "%%~i\*.*" "%sDestFolder%\%%~i\" /e /f /h /r /y
			) 
			popd
		)
	) else (
		echo Can't find destination folder [%sDestFolder%].
		exit /b 2
	)
) else (
	echo Can't find source folder [%sSourceFolder%].
	exit /b 1
)

endlocal
exit /b 0

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


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


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

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


Цитата megaloman:
Код: »
Ничего не происходит.

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


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


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

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


Цитата Iska:
Код: »
Не работает, окно сразу закрывается.

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


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


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

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


Вложения
Тип файла: txt 4 попытка 1 - копия.txt
(287 байт, 1 просмотров)

Цитата megaloman:
Вы сохранили код в 866 кодировке? Пути свои указали? Переименуйте свой командный файл в txt и предоставьте его. »
Да, я перекодировал в 866. Файл выложил. Пути указал вот:
Код: Выделить весь код
@Echo On
cls
	Set "BoxIn=r:"
	Set "MaskIn="*КЖ*.*" "*КМ*.*""
 
	Set "BoxOut=d:\1" 

	Pushd "%BoxIn%\"
	FOR /F "usebackq delims=" %%d IN (`2^>nul Dir %MaskIn% /B /A:D`) DO (
		Echo %%d
		>nul xcopy "%BoxIn%\%%d\*.*" "%BoxOut%\%%d\" /E /Q /Y /R /H /Z
	)
	Popd
pause
GoTo :Eof

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


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


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

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


Вложения
Тип файла: txt txt.txt
(26 байт, 2 просмотров)

Цитата megaloman:
В командном окне проделайте »
Прикладываю. Хочу добавить, что R это сетевой диск, я имею доступ только для чтения.

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


Ветеран


Contributor


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

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


Я неверно понял задачу: считал, что ваши КМ КЖ папки только в корне R:
Попробуйте так:
Код: Выделить весь код
@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

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

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

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



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




 
Переход