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

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

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

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


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

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


При загрузке компа батник должен удалить всё из " C:\Temp " кроме папки " IE "
всё это в тихом и невидимом режиме , без подтверждений .
Голова кипит второй день, помогите ....

Отправлено: 23:17, 12-10-2011

 

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


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

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


Код: Выделить весь код
for /d %%a in (C:\Temp\*) do if /i not "%%a"=="C:\Temp\IE" del/s/q %%~sa\*.* del /q C:\Temp\
но остаются пустые папки ... как их убрать ?

Отправлено: 15:43, 13-10-2011 | #2



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

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


Старожил


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

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


для удаления папок со всем содержимым есть спецкоманда RD

Отправлено: 17:31, 13-10-2011 | #3


Старожил


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

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


Вот так. В первый проход удалятся файлы, лежащие в корне целевой директории, во второй - ее поддиректории.
Код: Выделить весь код
@Echo Off
:: Укажите местонахождение директории для очистки
Set Target=C:\Temp
:: Поддиректория (или файл), которая НЕ должна удаляться
Set NoDelete=IE

For /F "tokens=*" %%F In ('Dir %Target% /A:-D /B') Do (
If /I Not "%%F"=="%NoDelete%" (Del /F /Q "%Target%\%%F")
)
For /F "tokens=*" %%D In ('Dir %Target% /A:D /B') Do (
If /I Not "%%D"=="%NoDelete%" (RD /S /Q "%Target%\%%D")
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:44, 13-10-2011 | #4


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


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

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


Огромное спасибо

Отправлено: 14:26, 19-10-2011 | #5


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


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

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


Цитата Anonymоus:
В первый проход удалятся файлы, лежащие в корне целевой директории, во второй - ее поддиректории. »
А как прописать, если нужно оставить не одну папку в директории, а две или три?

Отправлено: 23:54, 27-12-2011 | #6


Ветеран


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

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


Например, можно попробовать так:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

rem Укажите местонахождение директории для очистки
set sTargetFolder=E:\Песочница\0102

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

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
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:24, 28-12-2011 | #7


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


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

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


Iska, Спасибо большое! То, что надо.

Отправлено: 19:28, 28-12-2011 | #8


Аватара для Sisin

Старожил


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

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


Господа, подскажите, пожалуйста, как сделать разрыв строки в этом месте:

Код: Выделить весь код
set sExcludeFilesOrFolders="a" "bb" "cc cc" "dd dd" "vv vv" "hh hh" "kk kk" "oo oo" "pp pp" "uu uu" "rr rr" "ee ee"
чтобы "vv vv" "hh hh" "kk kk" "oo oo" были на следующей строке, "pp pp" "uu uu" "rr rr" "ee ee" на третьей...

Так не работает:
Код: Выделить весь код
set sExcludeFilesOrFolders="a" "bb" "cc cc" "dd dd" ^
"vv vv" "hh hh" "kk kk" "oo oo"^
"pp pp" "uu uu" "rr rr" "ee ee"

Последний раз редактировалось Sisin, 14-03-2017 в 14:52.


Отправлено: 13:36, 14-03-2017 | #9


Ветеран


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

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


Код: Выделить весь код
@echo off
set ^"sExcludeFilesOrFolders=^
 "a"^
 "bb"^
 "cc cc"^
 "dd dd"^
 "vv vv"^
 "gg gg"^"
echo%sExcludeFilesOrFolders%
:: или
echo %sExcludeFilesOrFolders:~1%
pause

Отправлено: 14:22, 14-03-2017 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление по маске, кроме папки исключения. serjei Скриптовые языки администрирования Windows 27 18-02-2012 03:42
CMD/BAT - [решено] Как удалить все папки кроме папок с названием длиной в 14 символов? yaoleg2 Скриптовые языки администрирования Windows 9 26-03-2011 03:49
Любой язык - [решено] Вывод списка файлов и их размеров в байтах из заданной папки Vadikan Скриптовые языки администрирования Windows 6 18-03-2011 23:16
CMD/BAT - [решено] Удалить все файлы из папки кроме нужных Sirimika Скриптовые языки администрирования Windows 16 12-11-2010 10:33
Процессор загружается на 100%. Виснет всё кроме музыки. Diagnos1990 Непонятные проблемы с Железом 7 09-02-2010 22:29




 
Переход