Код:
@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.
|