Системное администрирование

Исключение при удалении файлов в .bat

В общем есть скрипт:

@Echo off
rd /S /Q "C:\Users\%username%\Desktop\*"
rd /S /Q "C:\Users\%username%\Download\*"
del %Temp%\*.* /S /F /Q
del c:\windows\temp\*.* /S /F /Q

Проблема в том, что нужно каким то образом избежать удаление ярлыков на рабочем столе. Есть профи которые могут помочь? Спасибо.
В батнике исключений не бывает!
Грохай все как есть или по списку))
Пиши правильные пути https://en.wikipedia.org/wiki/Environment_variable
ЮЮ
Юрий Юрок
86 914
Лучший ответ
Виктор Никитин А как же ???
for /r C:\!TEST\ %%i in (*.*) do if not %%~xi==.lnk del %%i

1) Как это называется ?
2) Вы не поняли что он имел ввиду удалить все кроме lnk ?

Просто вот реально не догоняю, почему ты и другой ответили что исключений не бывает место того чтобы решить проблему человека.
Исключения есть в powershell, это уже другой уровень, но явно не лишний
Саша Артамонов
Саша Артамонов
56 904
Виктор Никитин А как же ???
for /r C:\!TEST\ %%i in (*.*) do if not %%~xi==.lnk del %%i

1) Как это называется ?
2) Вы не поняли что он имел ввиду удалить все кроме lnk ?

Просто вот реально не догоняю, почему ты и другой ответили что исключений не бывает место того чтобы решить проблему человека.
Варианты
1 - переместить временно ярлыки в другую временную папку. Удалить всё, вернуть обратно

2 - поставить атрибут у ярлыков readonly, удалять все кроме RO
см команду attrib

3 - удалять с помощью цикла for вроде этого (ключи к del добавьте сами какие нужны)
for /r C:\!TEST\ %%i in (*.*) do if not %%~xi==.lnk del %%i

4 - использовать vbs/jscript/powershell

Choose your destiny =)

Кст напомню, что на рабочем столе ещё есть скрытый системный файлик desktop.ini
Лучше его не трогать =)
Михаил Блохин
Михаил Блохин
84 764
Виктор Никитин я первйы ответил !!! ахахахах.
Только не говори что я там неправ !
Виктор Никитин Да ты правда гений с аттрибутом догадался я бы не догадался, но и все таки я первый ответил ахахах.
Виктор Никитин Да кстати вот ты красавчик норм ответил человеку !
Остальные исключений в бат нету бл* ахахаха с*ка.
Умничают нет бы просто ответить.
у норм это воходит
На счет исключений я думаю и в батнике все как в обычных языках программирования !.
Чтобы сделать исключения тебе нужно получать имена каждых файлов и смотреть есть ли там .lnk а по другому никак.
Это долгий код легче скопировать и вставить обратно.

Точнее вот две строки

copy C:\Users\%username%\Desktop\*.lnk C:\templnk\
copy C:\templnk\** C:\Users\%username%\Desktop\

Я их написал неправильно но если написать правильно работать будет!

1) Сначала скопировать файлы .lnk ярлыки
2) Удалить все файлы
3) Скопировать файлы обратно
Других вариантов пока не вижу если только думать очень долго да и то не думаю что найду.
А так хотел ответить быстро и вариант точно рабочий !
Но лишнее действие копирование файлов
Но оно должно занимать не более 5 секунд. может и 1.

Исключения !

copy C:\Users\%username%\Desktop\*.lnk C:\templnk\
rd /S /Q "C:\Users\%username%\Desktop\*"
copy C:\templnk\** C:\Users\%username%\Desktop\

rd /S /Q "C:\Users\%username%\Download\*"
del %Temp%\*.* /S /F /Q
del c:\windows\temp\*.* /S /F /Q
Кирилл Корнев
Кирилл Корнев
2 780
Александр Сергеевич Огромное спасибо))