Показать полную графическую версию : Копирование со структурой
westovich
04-06-2016, 10:00
Всем привет!
Помогите пожалуйста, выкурил форум, но ответа не нашёл.
Есть задача скопировать файлы с сохранением структуры каталогов в другой каталог и потом грохнуть копируемые файлы. Места мало, целиком скопировать в другой каталог не получится и поэтому делаю цикл.
Структура каталогов примерно такая:
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)
И вот тут начинаются сюрпризы - копируется всё целиком без сохранения структуры каталогов.
Подскажите пожалуйста, что я делаю не так?
Спасибо!
megaloman
04-06-2016, 16:18
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
)
Подскажите пожалуйста, что я делаю не так? »
Пользуйтесь не той операцией для «копирование-удаление». Используйте банальное перемещение, желательно — ручное.
westovich
05-06-2016, 09:47
Проблема задачи проста - на резервных носителях HDD, из-за долгого времени хранения (уже больше 7 лет), началась деградация данных. Лечение простое - скопировать данные. Сам носитель цел и для копирования и последующего удаления копируемых данных целиком места там нет. В такой ситуации не спасает и перемещение, т.к. это просто запись файловой системы. Поэтому нужен цикл копирования и последующего удаления копируемого. При этом нужно сохранение структуры - копирую множество каталогов с данными.
В общем нужно из каталога D:\1 по очереди скопировать с подкаталогами все файлы в D:\2 с последующим удалением копируемого и сохранением структуры D\:1
Начал я с цикла копирования, т.к. добавить потом удаление не проблема, как оказалось проблема скопировать..... :)
Помогите пожалуйста.
westovich, в таком случае просто возьмите DiskFresh - Refresh Hard Disk Signal (http://www.puransoftware.com/DiskFresh.html) и используйте.
Foreigner
05-06-2016, 10:47
Если уж надо "перекопировать", то:
@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
westovich
09-06-2016, 08:34
О как, и тот и тот вариант обязательно попробую. Особенно DiskFresh :)
Спасибо!
З.Ы.
Честно, не знал, что такая тулза есть.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.