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

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

Ветеран


Contributor


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

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


Вот вариант. Реально он ничего не удаляет. Можно запустить и проанализировать, как он работает. Чтобы скрипт реально удалял, надо убрать rem и можно удалить (можно и оставить если вывод на экран не напрягает) строки с Echo перед строками с rem.
Код: Выделить весь код
@Echo Off
cls

Set Where=temp
Set NoDel=values-ru

SetLocal EnableExtensions EnableDelayedExpansion

FOR /F "usebackq delims=" %%d IN (`Dir "%Where%\" /s /a:D /B 2^>nul`) DO (
        Set TDir=%%d
	Set TDir=!TDir:%NoDel%=!
	If "%%d"=="!TDir!" (
		Echo Del "%%d\*.*" /q 2>nul
rem		Del "%%d\*.*" /q 2>nul
		Set Yes=0
		FOR /F "usebackq delims=" %%i IN (`Dir "%%d" /s /a:D /B 2^>nul`) DO (
        		Set iDir=%%i
			Set iDir=!iDir:%NoDel%=!
			If Not "%%i"=="!iDir!" Set Yes=1
		)
		If !Yes!==0 Echo Rd "%%d" /s /q
rem		If !Yes!==0 Rd "%%d" /s /q

	)
)
Удаляем все файлы и директории во всех поддиректориях указанной директории (у вас это temp), но ничего в директории values-ru и ниже не трогаем.

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

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

Отправлено: 18:57, 11-06-2013 | #3