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

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

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

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


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

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


Изменения
Автор: Romul35
Дата: 10-06-2013
Есть папка temp с подпапками вида
temp\ApplicationsProvider.apk\res\values-ru
temp\AudioEffect.apk\res\values-ru
temp\Browser.apk\res\values-ru
В каждой подпапке есть лишние файлы и папки, как при помощи батника их удалить и оставить только папку values-ru с путями и то что в ней находится. Ну или копировать только ее в таком формате copy\*.apk\res\values-ru .Спасибо

Отправлено: 19:20, 10-06-2013

 

Ветеран


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

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


Переходите на PowerShell. Там можно использовать регулярные выражения.

Отправлено: 23:14, 10-06-2013 | #2



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

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


Ветеран


Contributor


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

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


Вот вариант. Реально он ничего не удаляет. Можно запустить и проанализировать, как он работает. Чтобы скрипт реально удалял, надо убрать rem и можно удалить (можно и оставить если вывод на экран не напрягает) строки с Echo перед строками с rem.
Код: Выделить весь код
@Echo Off
cls

Set Where=temp
Set NoDel=values-ru

SetLocal EnableExtensions EnableDelayedExpansion

FOR /F "usebackq delims=" %%d IN (`Dir "%Where%\" /s /a:D /B 2^>nul`) DO (
        Set TDir=%%d
	Set TDir=!TDir:%NoDel%=!
	If "%%d"=="!TDir!" (
		Echo Del "%%d\*.*" /q 2>nul
rem		Del "%%d\*.*" /q 2>nul
		Set Yes=0
		FOR /F "usebackq delims=" %%i IN (`Dir "%%d" /s /a:D /B 2^>nul`) DO (
        		Set iDir=%%i
			Set iDir=!iDir:%NoDel%=!
			If Not "%%i"=="!iDir!" Set Yes=1
		)
		If !Yes!==0 Echo Rd "%%d" /s /q
rem		If !Yes!==0 Rd "%%d" /s /q

	)
)
Удаляем все файлы и директории во всех поддиректориях указанной директории (у вас это temp), но ничего в директории values-ru и ниже не трогаем.

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

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

Отправлено: 18:57, 11-06-2013 | #3


Аватара для El Sanchez

Ветеран


Contributor


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

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


Romul35, еще вариант до кучи:
Код: Выделить весь код
@Echo Off
SetLocal
Set Source=C:\Temp

If Not Exist "%Source%" Exit /B 1
For /F "Tokens=*" %%A In ('Dir /B /S /AD "%Source%" 2^>nul^|Find /i /v "values-ru"') Do (Del /F /Q "%%A\*.*" 2>nul&RD /Q "%%A" 2>nul)
Del /F /Q "%Source%\*.*" 2>nul
RD /Q "%Source%" 2>nul
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:42, 11-06-2013 | #4


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


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

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


megaloman, Ваш скрипт не удаляет (rem убрал) вот что пишет. Может подскажете что не так?
Код: Выделить весь код
Del "D:\TEST\Temp\ActivityNetwork.apk\*.*" /q
Файл не найден
Rd "D:\TEST\Temp\ActivityNetwork.apk" /s /q
Системе не удается найти указанный путь.
Del "D:\TEST\Temp\ActivityNetwork.apk\original\*.*" /q
Файл не найден
Rd "D:\TEST\Temp\ActivityNetwork.apk\original" /s /q
Системе не удается найти указанный путь.
Del "D:\TEST\Temp\ActivityNetwork.apk\res\*.*" /q
Файл не найден
Rd "D:\TEST\Temp\ActivityNetwork.apk\res" /s /q
Системе не удается найти указанный путь.
Del "D:\TEST\Temp\ActivityNetwork.apk\original\META-INF\*.*" /q
Файл не найден
Rd "D:\TEST\Temp\ActivityNetwork.apk\original\META-INF" /s /q
Системе не удается найти указанный путь.
El Sanchez, Спасибо, в вашем варианте все удаляет только оставляет одну лишнюю папку по пути temp\*.apk\original

Отправлено: 14:02, 12-06-2013 | #5


Аватара для El Sanchez

Ветеран


Contributor


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

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


Цитата Romul35:
все удаляет только оставляет одну лишнюю папку по пути temp\*.apk\original »
Romul35, пардон, сортировку забыл:
Код: Выделить весь код
@Echo Off
SetLocal
Set Source=C:\Temp

If Not Exist "%Source%" Exit /B 1
For /F "Tokens=*" %%A In ('Dir /B /S /AD "%Source%" 2^>nul^|Find /i /v "values-ru"^|Sort /R') Do (Del /F /Q "%%A\*.*" 2>nul&RD /Q "%%A" 2>nul)
Del /F /Q "%Source%\*.*" 2>nul
RD /Q "%Source%" 2>nul
Цитата Romul35:
megaloman, Ваш скрипт не удаляет (rem убрал) вот что пишет. Может подскажете что не так? »
Romul35, да все так, с моим вариантом такие же предупреждения были бы, если бы stderr в нирвану не перенаправлял (2>nul после команд удаления)
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:19, 12-06-2013 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] автоматизация удаления файлов их множества архивов CRi Скриптовые языки администрирования Windows 2 30-12-2012 00:01
Любой язык - Копирование текстовых файлов в зависимости от их содержимого Brigadir_33 Скриптовые языки администрирования Windows 1 28-02-2012 08:02
Запрет удаления и преименования каталога, но полное редактирование содержимого mark23 Microsoft Windows NT/2000/2003 5 01-12-2011 09:24
MKV: рассинхрон после удаления одной аудиодорожки front242 Видео и аудио: обработка и кодирование 0 24-10-2008 10:30
CMD/BAT - *CMD/BAT*.Помогите с батником. pingUIN Скриптовые языки администрирования Windows 8 09-06-2007 07:55




 
Переход