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

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

Ветеран


Contributor


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

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


Exerion, Для начала, формат команды For неверен - кавычки неправильные. Сделайте For /? >C:\_For_Help.txt В файле посмотрИте, какие нужны. Дальше копать поленился.
По Вашему коду видно, что Вы хотите не скопировать (Copy) файлы, а переместить их (Move). Вот вариант решения (при совпадении имени файл перемещен не будет, батник выдаст ошибку)
Код: Выделить весь код
@Echo Off

Set From=E:\Над крылечком
Set To=E:\Дым колечком
Set Mask=*.mp3

Md "%To%" >Nul 1>Nul 2>Nul

For /F "usebackq delims=" %%f In (`Dir "%From%\%Mask%" /A:-D /B /S`) Do Move "%%f" "%To%\"
Вот еще вариант, при большом кол-ве файлов внутри директорий он будет работать быстрее, за счёт того, что групповые операции выполняются быстрее. Опять же, дубликаты по именам перемещены не будут
Код: Выделить весь код
@Echo Off

Set From=E:\Над крылечком
Set To=E:\Дым колечком
Set Mask=*.mp3

Md "%To%" >Nul 1>Nul 2>Nul

Move "%From%\%Mask%" "%To%\" >nul 1>Nul 2>Nul
For /F "usebackq delims=" %%f In (`Dir "%From%" /A:D /B /S`) Do Move "%%f\%Mask%" "%To%\"  >nul 1>Nul 2>Nul

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


Последний раз редактировалось megaloman, 06-01-2012 в 19:49. Причина: Дополнил ответ

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

Отправлено: 19:19, 06-01-2012 | #13