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

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

Ответить
Настройки темы
Любой язык - Удаление файлов и папок по имени

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


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

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


Добрый день, помогите пожалуйста, нужен скрипт который бы удалял в конкретной папке все папки, под папки, файлы кроме тех в название которые в начале стоит знак "!"
Удалять должен все папки без знака, даже если внутри него есть файлы и папки со знаком.
И еще одно условие: возможность добавить пути до папок и файлов исключения

Отправлено: 11:13, 02-11-2016

 

Ветеран


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

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


Цитата ilfaty:
Удалять должен все папки без знака, даже если внутри него есть файлы и папки со знаком.
И еще одно условие: возможность добавить пути до папок и файлов исключения »
А в этом случае что приоритетней — исключение где-нибудь глубоко во вложенной папке или наличие ! в родительской?!

Отправлено: 11:22, 02-11-2016 | #2



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

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


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


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

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


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

Последний раз редактировалось ilfaty, 02-11-2016 в 12:12.


Отправлено: 12:05, 02-11-2016 | #3


Ветеран


Contributor


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

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


Вот батник (то есть скрипт надо сохранить в файл с расширением .bat в 866 кодировке при наличии в тексте путей к файлам и папкам на русском языке). Из-за исключений получилось громоздко. Исключениями могут быть как файлы, так и папки целиком. Перед обработкой заданной папки исключения переносятся во временную папку, заданная папка обрабатывается, затем в ней восстанавливаются исключения, временная папка удаляется.
Код: Выделить весь код
@Echo Off

Set "InDir=Z:\Temp"
Set "Exc="_xcopy.txt" "JS_Host\Дискета от книги" "JS_Host\Из интернета\Листинг 1.htm""

Set "DSave=!%~nx0.tmp"

pushd "%InDir%"
attrib -r -s -h /S /D

Call :TmpRD "%InDir%" "%DSave%" 1

FOR %%E IN (%Exc%) DO Call :Save "%InDir%\%%~E" "%DSave%"

For /F "usebackq delims=" %%D In (`Dir "%InDir%\" /B /S /A:D 2^>nul^|Sort /R`) Do Call :DelDir "%%D" 
For /F "usebackq delims=" %%F In (`Dir "%InDir%\" /B /S /A:-D 2^>nul`) Do Call :DelFile "%%F" 

Call :Restore "%InDir%" "%DSave%"  

Call :TmpRD "%InDir%" "%DSave%"

GoTo :Eof

:TmpRD
	RD "%~d1\%~2" /S /Q 2>nul
	If "%3"=="1" MD "%~d1\%~2%~pnx1"
GoTo :Eof

:DelDir
	Set "DName=%~nx1"
	If Not "%DName:~0,1%"=="!" Rd %1 /S /Q
GoTo :Eof

:DelFile
	Set "FName=%~nx1"
	If Not "%FName:~0,1%"=="!" Del %1
GoTo :Eof

:Save
	For /F "usebackq delims=" %%f In (`Dir %1 /B /A:-D 2^>nul`) Do (
		If /I %1=="%~dp1%%f" (
			Md "%~d1\%~2%~p1" 2>nul
			Move /Y %1 "%~d1\%~2%~p1" >nul  
			GoTo :Eof
		)
	)

	Md "%~d1\%~2%~pnx1" 2>nul
	Move /Y "%~1\*.*" "%~d1\%~2%~pnx1\" >nul

	For /F "usebackq delims=" %%f In (`Dir %1 /B /S /A:D 2^>nul`) Do (
		Md "%%~df\%~2%%~pnxf" 2>nul
		Move /Y "%%f\*.*" "%%~df\%~2%%~pnxf\" >nul
	)
GoTo :Eof

:Restore
	xcopy "%~d1\%~2%~pnx1\*.*" "%~1\" /E /Y >nul
GoTo :Eof
Здесь для примера:
Z:\Temp - обрабатываемая папка
Исключения:
_xcopy.txt - файл в обрабатываемой папке, то есть Z:\Temp\_xcopy.txt
JS_Host\Дискета от книги - папка, то есть Z:\Temp\JS_Host\Дискета от книги
и т д, уровень вложенности папок и файлов исключений любая
Не исключаю, что после обработки некоторые папки будут пустыми, я их не удалял, если они соответствуют условию поставленной задачи
Cделана доработка с учетом наличия скрытых, системных и только для чтения файлов. Перед обработкой все эти атрибуты сбрасываются. Если это не устраивает, придётся радикально переделывать код.

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


Последний раз редактировалось megaloman, 03-11-2016 в 21:21. Причина: Доработка с учетом наличия скрытых, системных и только для чтения файлов

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

Отправлено: 18:49, 03-11-2016 | #4


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


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

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


megaloman, Спасибо огромное, после праздников испробую. Вопросик, я сам в скриптовых языках не шарю, на каком написан этот скрипт, какое расширение писать?

Отправлено: 19:00, 03-11-2016 | #5


Ветеран


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

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


Цитата ilfaty:
на каком написан этот скрипт »
Пакетный файл.

Цитата ilfaty:
какое расширение писать? »
«.cmd».
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:08, 03-11-2016 | #6


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


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

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


ок, поставил .cmd,
Проблемы:
1. В корне диска создается Временная папка и после обработки эта папка не удаляется

2. Что за ошибки, системные файлы удалить не может?

C:\Users\Yusupov.i>"C:\Users\Yusupov.i\Desktop\Удалить все без знака !.cmd"
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти E:\Share\Docs11\desktop.ini
Не удается найти E:\Share\Docs11\! ИНЖЕНЕР ПО ОТ и ТБ\! РемГрупп\!Инженер по ОТ
и ТБ\~$ормы выд. СИЗ РемГрупп 2015.docx
Не удается найти E:\Share\Docs11\! ИНЖЕНЕР ПО ОТ и ТБ\!Гражданская оборона\Thumb
s.db
Не удается найти E:\Share\Docs11\! ИНЖЕНЕР ПО ОТ и ТБ\!заявка\Thumbs.db
Не удается найти E:\Share\Docs11\! ИНЖЕНЕР ПО ОТ и ТБ\!Инструктаж по ОТ и ТБ\Thu
mbs.db
Не удается найти E:\Share\Docs11\! ИНЖЕНЕР ПО ОТ и ТБ\!П Р Е З Е Н Т А Ц И Я\Thu
mbs.db
Не удается найти E:\Share\Docs11\! ИНЖЕНЕР ПО ОТ и ТБ\!П Р Е З Е Н Т А Ц И Я\!Ал
маз\Thumbs.db
Не удается найти E:\Share\Docs11\! ИНЖЕНЕР ПО ОТ и ТБ\!ПРИБРЕЖНЫЙ-2\Thumbs.db
Не удается найти E:\Share\Docs11\! ИНЖЕНЕР ПО ОТ и ТБ\!ПРИБРЕЖНЫЙ-2\!Паспорта от
ходов ПР2\Thumbs.db
Не удается найти E:\Share\Docs11\! ИНЖЕНЕР ПО ОТ и ТБ\!Фото\Thumbs.db
Не удается найти E:\Share\Docs11\! Новые формы раскрытия информации 731\Thumbs.d
b

Последний раз редактировалось ilfaty, 03-11-2016 в 20:19.


Отправлено: 19:57, 03-11-2016 | #7


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


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

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


Отработал, вроде все нормаль, но не понятные ошибки все равно остались

E:\Share\Docs11>"E:\Скрипты\Удалить все без знака !.cmd"

Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.

E:\Share\Docs11>

И надо удалять временную папку которая создается в корне диска

Отправлено: 22:05, 03-11-2016 | #8


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


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

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


Вложения
Тип файла: txt Удалить все без знака !.txt
(1.2 Kb, 11 просмотров)

вот мой батник

Отправлено: 22:08, 03-11-2016 | #9


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


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

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


Все заработала, зашел под логином Администратор, хотя у моей четки тоже полные права админа.
Спасибо огромное

Отправлено: 10:49, 04-11-2016 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Удаление файлов и папок по списку с выводом результата в файл Sub-Zero Скриптовые языки администрирования Windows 0 08-12-2015 23:12
CMD/BAT - [решено] Удаление созданных папок и файлов по времени zavoruev Скриптовые языки администрирования Windows 24 22-04-2013 10:36
Любой язык - Удаление файлов старше 5 дней кроме указанного по имени. Joni Скриптовые языки администрирования Windows 6 11-07-2012 11:18
CMD/BAT - [решено] удаление файлов по маске имени hlpain Скриптовые языки администрирования Windows 4 02-09-2011 16:11
CMD/BAT - Удаление старых файлов по имени файлов Bиктор Скриптовые языки администрирования Windows 1 19-04-2010 03:37




 
Переход