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

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

Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off

Set Otkuda=E:\DDDDD

Set NoDelete=C:\%~nx0.NoDelete
@Echo %0 >%NoDelete%

@Echo \01-Zig Zaggity Woop Woop Pt. 1.mp3 >>%NoDelete%
@Echo \04-Don't You Feel My Leg.mp3 >>%NoDelete%
@Echo \07-Next Week Sometime.mp3 >>%NoDelete%

FOR /F "usebackq delims=" %%f IN (`xcopy "%Otkuda%\*.*" C:\ /L /S /EXCLUDE:%NoDelete%`) DO Del "%%f"

Del %NoDelete%
Как это работает:
- Обрабатываем файлы в папке (с подпапками), определёнными в переменной Otkuda
- В текстовый файл в корне C:\ сохраняем список неудаляемых файлов (его имя я сделал по имени батника с добавлением .Nodelete. Для примера, я здесь указал 3 файла. Для бОльшей надёжности перед именем файла поставил \
В том же списке и имя батника (если он расположен в обрабатываемой папке для защиты от удаления самого себя)
- Xcopy выдаёт список (/L) файлов в указанной папке и подпапках (/S) для обработки в команде For (в частности, для удаления), за исключением имён записанных в наш текстовый файл (ключ /EXCLUDE). Следует учесть особенность работы ключа EXCLUDE
читать дальше »
Цитата:
/EXCLUDE:file1[+file2][+file3]...
Указывает список файлов, содержащих строки. Каждая строка
должна находиться в отдельной линии в файлах. Если одна из
строк совпадает с любой частью абсолютного пути
копируемого
файла, то такой файл копироваться не будет. Например,
указывание таких строк, как \\obj\\ или .obj, исключает
из копирования все файлы в папке obj и, соответственно, все
файлы с расширением .obj.

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


Последний раз редактировалось megaloman, 29-07-2012 в 16:02.

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

Отправлено: 15:34, 29-07-2012 | #3