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

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

Ответить
Настройки темы
CMD/BAT - Копирование со структурой

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


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

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


Всем привет!

Помогите пожалуйста, выкурил форум, но ответа не нашёл.
Есть задача скопировать файлы с сохранением структуры каталогов в другой каталог и потом грохнуть копируемые файлы. Места мало, целиком скопировать в другой каталог не получится и поэтому делаю цикл.
Структура каталогов примерно такая:

D:\TEST
+---11
+---3
| SANY2466.JPG
| Тест тест.JPG
|
+---4
| SANY2476.AVI
| SANY2478.JPG
| Тест тест.JPG
|
\---6
SANY2455.JPG
SANY2456.JPG
SANY2461.JPG
Тест тест.JPG

Сначала в цикле пытаюсь скопировать с сохранением структуры, потом буду удалять:
D:\>for /R D:\Test %d in ("*") do (xcopy /E "%d" D:\1)

И вот тут начинаются сюрпризы - копируется всё целиком без сохранения структуры каталогов.
Подскажите пожалуйста, что я делаю не так?

Спасибо!

Отправлено: 10:00, 04-06-2016

 

Ветеран


Contributor


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

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


westovich, Вы себе противоречите.
Цитата:
Есть задача скопировать файлы с сохранением структуры каталогов в другой каталог и потом грохнуть копируемые файлы
Затем Вы делаете попытку, как мне показалось, скопировать полностью каталог test. Об удалении речь не идёт. При этом Вы пИшите
Цитата:
Места мало, целиком скопировать в другой каталог не получится
Если всё-таки копируете целиком, почему не так? Затем удалить исходные файлы не проблема
Код: Выделить весь код
@Echo off

Set "InBox=D:\Test"
Set "OutBox=D:\1"

Pushd "%InBox%"

Xcopy /E *.* "%OutBox%\"
Можно перемещать файлы по папкам, если структура папок в исходном каталоге не надо, её в исходной папке можно легко очистить
Код: Выделить весь код
@Echo off

SetLocal EnableExtensions EnableDelayedExpansion

Set "InBox=D:\Test"
Set "OutBox=E:\1"

Pushd "%InBox%"

move /Y *.* "%OutBox%\" >nul 2>nul
FOR /F "usebackq delims=" %%d IN (`Dir /b /s /A:D 2^>nul`) DO (
	Set "Out=%%d"
    	Set Out=!Out:%InBox%=%OutBox%!
	md "!Out!\" 2>nul
	move /Y "%%d\*.*" "!Out!\" >nul 2>nul
)
И, наконец, если структуру каталогов в исходной папке сохранять не надо и если исходная и конечная папки на одном диске. В принципе, исходное дерево каталогов можно восстановить
Код: Выделить весь код
@Echo off
cls

Set "InBox=D:\Test"
Set "OutBox=D:\1"

Pushd "%InBox%"

move /Y *.* "%OutBox%\"
FOR /F "usebackq delims=" %%d IN (`Dir /b /A:D 2^>nul`) DO (
	move /Y "%InBox%\%%d" "%OutBox%\" >nul
)

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


Последний раз редактировалось megaloman, 04-06-2016 в 17:31.


Отправлено: 16:18, 04-06-2016 | #2



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

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


Ветеран


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

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


Цитата westovich:
Подскажите пожалуйста, что я делаю не так? »
Пользуйтесь не той операцией для «копирование-удаление». Используйте банальное перемещение, желательно — ручное.

Отправлено: 16:36, 04-06-2016 | #3


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


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

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


Проблема задачи проста - на резервных носителях HDD, из-за долгого времени хранения (уже больше 7 лет), началась деградация данных. Лечение простое - скопировать данные. Сам носитель цел и для копирования и последующего удаления копируемых данных целиком места там нет. В такой ситуации не спасает и перемещение, т.к. это просто запись файловой системы. Поэтому нужен цикл копирования и последующего удаления копируемого. При этом нужно сохранение структуры - копирую множество каталогов с данными.
В общем нужно из каталога D:\1 по очереди скопировать с подкаталогами все файлы в D:\2 с последующим удалением копируемого и сохранением структуры D\:1

Начал я с цикла копирования, т.к. добавить потом удаление не проблема, как оказалось проблема скопировать.....

Помогите пожалуйста.

Отправлено: 09:47, 05-06-2016 | #4


Ветеран


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

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


westovich, в таком случае просто возьмите DiskFresh - Refresh Hard Disk Signal и используйте.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:18, 05-06-2016 | #5


Ветеран


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

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


Если уж надо "перекопировать", то:
Код: Выделить весь код
@echo off

2>nul md "D:\2"
subst x: "D:\2"

subst z: "D:\1"
pushd z:\

for /f "tokens=*" %%i in ('dir /b /s /ad') do 2>nul md "x:%%~pnxi"
for /f "tokens=*" %%i in ('dir /b /s /a-d') do copy "%%~pnxi" "x:%%~pnxi" && del "%%i"

popd
subst z: /d
subst x: /d
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:47, 05-06-2016 | #6


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


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

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


О как, и тот и тот вариант обязательно попробую. Особенно DiskFresh

Спасибо!

З.Ы.
Честно, не знал, что такая тулза есть.

Последний раз редактировалось westovich, 09-06-2016 в 08:35. Причина: Краткая правка


Отправлено: 08:34, 09-06-2016 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2010 - Как отключить копирование со стилями? Scaltro Microsoft Office (Word, Excel, Outlook и т.д.) 1 15-03-2014 00:35
CMD/BAT - помогите реализовать копирование со счетчиком! mpg_kyron Скриптовые языки администрирования Windows 3 03-07-2013 12:06
2008 R2 - Требуется помощь новичку со структурой домена и dns Patjomkin Windows Server 2008/2008 R2 0 21-11-2011 16:02
Прочее - Автоматическое копирование локальных профилей со всех компьютеров сети old_nick Сетевые технологии 3 07-04-2011 10:49
Flash - Восстановление данных с OCZ ATV 8GB - OCZUSBATV8G (нужно с структурой файлов) sashaOMC Накопители (SSD, HDD, USB Flash) 9 09-05-2010 12:38




 
Переход