Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Очистка папок в директории со списком исключения

Ответить
Настройки темы
CMD/BAT - [решено] Очистка папок в директории со списком исключения

Новый участник


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

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


Добрый день.

Есть задача по очистке определенных папок в директории. Помимо всего прочего некоторые папки трогать нельзя. Чувствую, что копать надо в сторону vbs, но, к сожалению, в нем не силен. Есть скрипт, оставленный прошлым админом, который удаляет все папки из директории, кроме тех, которые находятся в исключении
Код: Выделить весь код
setlocal enableextensions enabledelayedexpansion

rem Укажите местонахождение директории для очистки
set sTargetFolder=C:\1

rem Поддиректория (или файл), которая НЕ должна удаляться
set sExcludeFilesOrFolders="5"

for /f "tokens=*" %%i in ('dir "%sTargetFolder%" /b /a:-d') do (
	set /a bDelete = 1
	
	for %%j in (%sExcludeFilesOrFolders%) do (
		if /i "%%i" equ "%%~j" set /a bDelete = 0
	)
	
	if !bDelete! equ 1 del /f /q "%sTargetFolder%\%%i"
)

for /f "tokens=*" %%i in ('dir "%sTargetFolder%" /b /a:d') do (
	set /a bDelete = 1
	
	for %%j in (%sExcludeFilesOrFolders%) do (
		if /i "%%i" equ "%%~j" set /a bDelete = 0
	)
	
	if !bDelete! equ 1 rd /s /q "%sTargetFolder%\%%i"
)

endlocal
exit /b 0
В директории "C:\1", допустим, находятся папки 2,3,4,5,6. Скрипт выше удаляет все, кроме папки 5. А мне необходимо, чтобы он именно очищал содержимое папок, которые не включены в исключения

Заранее благодарю

Отправлено: 17:03, 17-07-2017

 

Ветеран


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

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


Цитата mazila-iia:
Есть скрипт, оставленный прошлым админом, который удаляет все папки из директории, кроме тех, которые находятся в исключении »
Меня терзают смутные сомнения… Ваш прошлый админ — не этот: CMD/BAT - [решено] Удалить всё кроме заданной папки ?!


Цитата mazila-iia:
чтобы он именно очищал содержимое папок, »
И файлы, и вложенные папки? Без исключений?

Цитата mazila-iia:
В директории "C:\1", допустим, находятся папки 2,3,4,5,6. »
А файлы в C:\1 надо удалять?
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:27, 17-07-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


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

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


Цитата Iska:
Цитата mazila-iia:
Есть скрипт, оставленный прошлым админом, который удаляет все папки из директории, кроме тех, которые находятся в исключении »
Меня терзают смутные сомнения… Ваш прошлый админ — не этот: CMD/BAT - [решено] Удалить всё кроме заданной папки ?! »
Ага, похоже этот

И файлы, и вложенные папки. Файлы в C:\1 тоже надо, но, на самом деле, это не так критично
Я, к сожалению (а может и к счастью), больше по линуксу поэтому вообще пока ничего в голову путного не приходит, как это реализовать

Отправлено: 17:35, 17-07-2017 | #3


Ветеран


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

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


Цитата mazila-iia:
Файлы в C:\1 тоже надо, но, на самом деле, это не так критично »
Они и так сейчас удаляются.


Замените:
Код: Выделить весь код
	if !bDelete! equ 1 rd /s /q "%sTargetFolder%\%%i"
на:
Код: Выделить весь код
	if !bDelete! equ 1 pushd "%sTargetFolder%\%%i" && (
		rd /s /q "%sTargetFolder%\%%i"
		popd
	)
Не проверялось.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:46, 17-07-2017 | #4


Ветеран


Contributor


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

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


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

Set "BoxIn=Z:\Folder 1" 

Set Exclude="Folder 5" "Folder 7"

Del /Q "%BoxIn%\*.*"
FOR /D %%f IN ("%BoxIn%\*.*") DO Call :Purgen "%%f"
GoTo :Eof

:Purgen
	FOR %%d IN (%Exclude%) DO If /I %%d=="%~nx1" GoTo :Eof
	Pushd %1&& (Rd %1 /S /Q 2>nul &Popd)
GoTo :Eof
В "Folder 1" имеются куча папок. Они очистятся все, кроме папок указанных в списке Exclude. В списке может быть много исключений. В корне "Folder 1" удаляются все файлы.

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

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

Отправлено: 18:21, 17-07-2017 | #5


Новый участник


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

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


Цитата megaloman:
В "Folder 1" имеются куча папок. Они очистятся все, кроме папок указанных в списке Exclude. В списке может быть много исключений. В корне "Folder 1" удаляются все файлы »
Похоже это то, что нужно. Большое спасибо

Отправлено: 08:01, 18-07-2017 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Очистка папок в директории со списком исключения

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Сравнение csv со списком sharepoint zaknafein Скриптовые языки администрирования Windows 1 30-01-2017 00:01
2010 - Outlook 2010: проблема со списком дел Farru Microsoft Office (Word, Excel, Outlook и т.д.) 0 11-06-2015 10:22
Синхронизация описаний компьютеров со списком Active Directory tangichhan Microsoft Windows NT/2000/2003 1 21-10-2011 07:56
2003/XP/2000 - [решено] Excel | Создание поля со списком и описанием списка Drongo Microsoft Office (Word, Excel, Outlook и т.д.) 5 06-07-2011 17:24
Интерфейс - Изменить размер шрифта в окне со списком служб Sanc4eZ Microsoft Windows 2000/XP 7 15-11-2009 15:39




 
Переход