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

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

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

Аватара для Art3m

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


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

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


Добрый день!

Прошу вашей помощи! Необходимо создать файлик который бы обходил все папки в каталоге и удалял содержимое только из определенных.
Например, есть каталог C:\Web\ в котором содержится много подпапок. В каждой подпапке есть еще одна папка с именем "Документы" (пример C:\Web\1\Документы или C:\Web\2\Документы), но может и чуть более глубокая структура например C:\Web\3\Work\Документы. Необходимо, чтоб файл обходил все папки \подпапки и удалял содержимое папок с именем "Документы".
Своего ума не хватает, чтоб создать! Спасибо большое!

-------
OMNIA MUTANTUR, NIHIL INTERIT


Отправлено: 16:10, 01-12-2018

 

Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In"
	Set "BoxDel=ДокУменты"
	
rem	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%BoxDel%" /b /s /a:D`) DO (
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\" /B /S /A:D`) DO If /I "%%~nxf"=="%BoxDel%" (
		Pushd "%%f" 2>nul &&(
			Echo "%%f"
			Rd /s /q "%%f" 2>nul
			Popd
		)
	)
Pause

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


Последний раз редактировалось megaloman, 01-12-2018 в 21:10.

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

Отправлено: 17:48, 01-12-2018 | #2



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

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


Ветеран


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

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


megaloman,
у меня на любую глубину только вот так заходит: dir /ad/b/s "C:\papka\*Документы", так "C:\papka\Документы" почему-то только на верхний уровень.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:03, 01-12-2018 | #3


Ветеран


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

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


вот ?
Файл 155193

Последний раз редактировалось alpap, 05-04-2019 в 02:42.

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

Отправлено: 18:10, 01-12-2018 | #4


Аватара для Art3m

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


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

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


megaloman,
Спасибо за быстрый ответ! Но у меня не сработало! Подскажите как могу проверить, что не так. Команда
Цитата alpap:
dir /ad/b/s "C:\papka\*Документы" »
показывает корректно все папки с подпапками

-------
OMNIA MUTANTUR, NIHIL INTERIT


Отправлено: 18:40, 01-12-2018 | #5


Ветеран


Contributor


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

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


alpap,
Цитата alpap:
у меня на любую глубину только вот так заходит: dir /ad/b/s "C:\papka\*Документы", так "C:\papka\Документы" почему-то только на верхний уровень. »
Я в ужасе. Это именно так, как бороться, не знаю. Но *Документы -это не решение, проверил, выбирает и еееДокументы и т д и т п
Поэтому:
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In"
	Set "BoxDel=ДокУменты"

	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\" /B /S /A:D`) DO If /I "%%~nxf"=="%BoxDel%" (
		Pushd "%%f" 2>nul &&(
			Echo "%%f"
			Rd /s /q "%%f" 2>nul
			Popd
		)
	)
Pause
GoTo :Eof

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

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

Отправлено: 20:50, 01-12-2018 | #6


Ветеран


Contributor


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

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


Вложения
Тип файла: txt я18120119.bat.txt
(291 байт, 1 просмотров)

Цитата Art3m:
Но у меня не сработало! Подскажите как могу проверить, что не так. Команда
dir /ad/b/s "C:\papka\*Документы" »
показывает корректно все папки с подпапками »
Это в командной строке? А батник, случаем, вы создали в 866 (Dos) кодировке? Иначе по умолчанию CMD корректно работать не будет - папки с русскими символами в имени найдены не будут. Прикрепляю мой переименованный батник в нужной кодировке.
Как вариант, который не приветствую, если сохраняете батник в 1251 (Windows) кодировке, то
Код: Выделить весь код
@Echo Off
cls
	Chcp 1251 >nul

	Set "BoxIn=Z:\Box_In"
	Set "BoxDel=ДокУменты"

	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\" /B /S /A:D`) DO If /I "%%~nxf"=="%BoxDel%" (
		Pushd "%%f" 2>nul &&(
			Echo "%%f"
			Rd /s /q "%%f" 2>nul
			Popd
		)
	)
Pause
GoTo :Eof

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

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

Отправлено: 21:00, 01-12-2018 | #7


Аватара для Art3m

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


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

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


Изображения
Тип файла: png 1.png
(26.7 Kb, 3 просмотров)

Проверил обновленный код - не удаляет! Файлы остались в тестовых каталогах! Разобрался. Не хотел русские буквы на компе понимать. Пересохранил правильно! Спасибо! Потестирую побольше!

-------
OMNIA MUTANTUR, NIHIL INTERIT


Последний раз редактировалось Art3m, 01-12-2018 в 21:14.


Отправлено: 21:08, 01-12-2018 | #8


Аватара для Art3m

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


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

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


Цитата megaloman:
Set "BoxIn=Z:\Box_In" »
Тут подумалось, а нельзя ли сделать чтоб батник работал из папки, без того чтоб путь задавать.Естественно, чтоб проверял эту папку и глубже, чтоб проблем не возникало, если на разных компах буква диска другая.

-------
OMNIA MUTANTUR, NIHIL INTERIT


Отправлено: 22:53, 02-12-2018 | #9


Ветеран


Contributor


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

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


Art3m, чтоб батник работал из папки
Код: Выделить весь код
@Echo Off
cls
	Chcp 1251 >nul

	Set "BoxIn=%~dp0"
	Set "BoxDel=ДокУменты"

	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%" /B /S /A:D`) DO If /I "%%~nxf"=="%BoxDel%" (
		Pushd "%%f" 2>nul &&(
			Echo "%%f"
			Rd /s /q "%%f" 2>nul
			Popd
		)
	)
Pause
GoTo :Eof
Имхо, но это стремновато, не туда скопируете батник, случайно запустите, и потом будете искать возможность восстановить утерянное. ☺

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


Последний раз редактировалось megaloman, 03-12-2018 в 11:37.

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

Отправлено: 00:18, 03-12-2018 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] удаление содержимого папок daswer Скриптовые языки администрирования Windows 6 21-08-2013 16:19
CMD/BAT - [решено] Удаление определенных файлов в конкретных папках mrG0bliN Скриптовые языки администрирования Windows 6 03-06-2013 22:37
CMD/BAT - [решено] Сравнение содержимого папок и копирование недостающих файлов Laertes Скриптовые языки администрирования Windows 8 14-05-2013 11:34
Разное - [решено] Как добиться отображения содержимого папок в Windows 7? teapot08 Microsoft Windows 7 2 03-05-2012 19:34
Разное - Назначение содержимого папок дистрибутива WindowsXP Pro SP2 DNK_Inc Microsoft Windows 2000/XP 3 27-12-2007 18:18




 
Переход