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