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

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

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

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


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

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


Пытаюсь написать командный файл для уничтожения набора файлов в заданной папке. Смотря примеры, получилось что-то такое. Помогите исправить и покажите, как должно быть правильно, пожалуйста


@echo off
setlocal enabledelayedexpansion
set /p "question=Vvedit imena failov, rosdelayja ich probelamy: "
set /p "question2=Vvedit razpolozchenyye failov:"
for /F "tokens=* delims= " %%h in ("%question%")
do for /D %%d in ("\\%%h\%question2%")
del "%%d" /s /q
pause
exit

Отправлено: 14:59, 28-03-2020

 

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


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

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


megaloman, спасибо! а возможно ли более универсальное решение? Например не указывать каталоги:
D:\IS\users\Config\
D:\IS\users\Home\
D:\IS\users\Temp\

а сказать скрипту пройтись по подкаталогам каталога D:\IS\users\ и удалить в этих подкаталогах все папки, отличные от TEST? В принципе, если так будет легче составить логику, можно удалить и сами каталоги Config, Home, Temp, если в них не будет найден подкаталог TEST.

Отправлено: 11:19, 07-04-2020 | #11



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

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


Ветеран


Contributor


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

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


pedrosoft, Я правильно понимаю, в D:\IS\users\ есть много папок. В этих папках надо убить все подпапки, корме TEST?
Код: Выделить весь код
@Echo Off
	Set "BoxIn=D:\IS\users"
	Set "Exclude=Test"

	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir /B /A:D "%BoxIn%"`) DO (
		Call :DelDir "%BoxIn%\%%~f" "%Exclude%"
	)
Exit /B

:DelDir
	If Not Exist "%~1" (Echo !!! %1 not found &Exit /B 1)
	FOR /F "usebackq delims=" %%d IN (`2^>nul Dir /B /A:D "%~1\"`) DO (
		If /I Not "%%~d"=="%~2" Rd /S /Q "%~1\%%~d"
	)
Exit /B

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

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

Отправлено: 14:53, 07-04-2020 | #12


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


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

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


megaloman, папок всего 3, просто не хотелось привязываться к их именам. Спасибо, работает!
А чтобы после вашего кода выполнить другой достаточно удалить последнюю команду Exit /B или удалять её в обоих местах?

Отправлено: 19:37, 07-04-2020 | #13


Ветеран


Contributor


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

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


Цитата pedrosoft:
А чтобы после вашего кода выполнить другой достаточно удалить последнюю команду Exit /B или удалять её в обоих местах? »
Низззььяяя нигде!
Структура кода, как и в нормальном языке программирования (с некоторой долей условности):
До первого exit идёт так называемая главная часть программы. Там могут вызываться процедуры, которые определяются ниже. Если что-то дописывать, то там.
После первого exit идёт первая процедура, которая завершается своим exit. Если Вы нарисуете свои процедуры, будьте добры располагать их после любого exit в моём коде.
Конкретно, в главной части оего кода в цикле for вызываем (call) процедуру DelDir.

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


Последний раз редактировалось megaloman, 07-04-2020 в 19:55.

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

Отправлено: 19:48, 07-04-2020 | #14


Ветеран


Contributor


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

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


Цитата pedrosoft:
А чтобы после вашего кода выполнить другой… »
Располагайте его перед первым exit /b. Либо, действительно, делайте по аналогии отдельную процедуру и вызывайте её из указанного места.

Отправлено: 22:08, 08-04-2020 | #15



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Удаление символов в конце имени файлов в папке Viktor99 Скриптовые языки администрирования Windows 9 02-06-2019 23:27
CMD/BAT - Удаление файлов старше N дней в подпаках, кроме файлов в самой папке Negtm Скриптовые языки администрирования Windows 4 03-02-2017 15:30
CMD/BAT - [решено] Удаление всех файлов кроме указанных, с содержанием указанных букв в названии mrG0bliN Скриптовые языки администрирования Windows 11 15-04-2016 14:07
VBS/WSH/JS - VBS удаление файлов, по маске и папок из указанных расположений. Karotin Скриптовые языки администрирования Windows 0 24-11-2015 15:05
CMD/BAT - [решено] Удаление файлов и папок кроме указанных. mrG0bliN Скриптовые языки администрирования Windows 20 07-11-2015 03:59




 
Переход