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

Показать сообщение отдельно

Ветеран


Contributor


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

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


Цитата:
Так «скопировал-удалил» или «переместил»? Это принципиально разные вещи.
- совершенно справедливо. Если перемещение идёт в директориях одного диска, то это делается мигом. И перемещение гораздо безопаснее, сама команда 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, 06-06-2012 в 11:52.

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

Отправлено: 10:05, 06-06-2012 | #4