Показать полную графическую версию : [решено] Поочередное перемещение файлов по одному.
Добрый день.
Необходимо написать скрипт который перемещает файлы из одной папки в другую по одному (например: 1.txt скопировал-удалил, 2.txt скопировал-удалил ), и оставляет пустую исходную папку.
У меня получился скрипт подобного вида:
XCOPY /S/Q/Y "D:\2\*.*" "D:\22\*.*"
CD /D "D:\" & RD /S/Q "D:\2\*.*"
pause
НО, он сначала копирует весь каталог, а после уже удаляет скопированную папку.
Заранее благодарен за помощь.
1. Так «скопировал-удалил» или «переместил»? Это принципиально разные вещи.
2. Почему не устраивает имеющийся вариант, который работает быстрее?
Iska,
Мне идеально подходит вариант с перемещением.
Файлов очень много, примерно полмиллиона. Мой вариант не позволяет перезагружать и выключать компьютер, т.к. при принудительном завершении работы батника, и последующем запуске он начинает весь процесс заново.
megaloman
06-06-2012, 10:05
Так «скопировал-удалил» или «переместил»? Это принципиально разные вещи. - совершенно справедливо. Если перемещение идёт в директориях одного диска, то это делается мигом. И перемещение гораздо безопаснее, сама команда Move отслеживает успешность перемещения. Если Каталог 2 не расшарен и не имеет особых прав доступа, то возможно move /Y d:\2 D:\22
md d:\2 Либо, без пересоздания папки 2 @Echo off
Md D:\22
FOR /F "usebackq delims=" %%i IN (`dir D:\2\*.* /b`) DO Move /Y "D:\2\%%i" "D:\22\" Либо совсем как хотелось, по одному файлу но с сохранением исходной структуры папок@Echo off
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion
Xcopy /T /Y "D:\2\*.*" "D:\22\"
FOR /F "usebackq delims=" %%i IN (`dir "D:\2\*.*" /b /S /A:-D`) DO (
Set From="%%i"
Move /Y !From! !From:D:\2\=D:\22\!
)
В принципе, можно после завершения процесса убить и саму исходную папку, но гарантии, что где-то в папке не остались файлы, нет. При необходимости придётся дописать для этого кусок кода, например, вставив анализ на успешность завершения каждого из перемещений (ErrorLevel) (естественно, если папка 2 не пополняется содержимым в процессе обработки).
megaloman, не только; в первую очередь — получающаяся разница в правах на файл.
Iska, Спасибо, что откликнулись!
megaloman, Взял 1й, а потом и 2й вариант. Очень помогли мне, спасибо.
p.s. только во 2 и 3 решении синтаксис местами не ясен)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.