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

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

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

Аватара для jentoso

Ветеран


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


Конфигурация

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


Помогите с удалением каталогов по следующим критериям:
1. Удаление папки у которой меняется имя состоящее из букв и цифр.
2. Удаление папок кроме определенной (либо определенных)
Эти обе задачи между собой не связаны. Просто решил не создовать несколько тем, а задать в одной.
Спасибо.

Отправлено: 21:02, 30-05-2009

 

Googler


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

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


semiono, аналогично предыдущему:
Код: Выделить весь код
@Echo Off

Set $ROOT=C:
Set $FILE=%~dpn0.lst
Set $TEMP=%~dpn0.tmp

DIR /B "%$ROOT%\*" >"%$TEMP%"
DIR /B/A:H "%$ROOT%\*" >>"%$TEMP%"

For /F "Delims=" %%i In ('FindStr /IVXG:"%$FILE%" "%$TEMP%"') Do (
	If Exist "%$ROOT%\%%i\" (
		@Echo RD /S/Q "%$ROOT%\%%i"
	) ELSE (
		@Echo ATTRIB -H -S "%$ROOT%\%%i"
		@Echo DEL /F/Q "%$ROOT%\%%i"
	)
)
пример LST-файла:
Код: Выделить весь код
~
BOOT.INI
NTDETECT.COM
NTLDR

Последний раз редактировалось amel27, 13-06-2009 в 03:03. Причина: удаление скрытых, пример LST

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

Отправлено: 16:57, 12-06-2009 | #11



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

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


Аватара для semiono

Ветеран


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

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


offtop: а что @reg export /? только ключами сейвить? бли, как неудобно!!
а нельзяль хоть как-то отфильтровать потом файл my.reg, или может утиль есть чтоб по конкретно value каждый сейвить избирательно?

ЗЫ ну кто же такие утилиты делает с ограничениями элементарного :\
ай ай, микросовт!

-------
Полезное сообщение


Отправлено: 20:19, 15-06-2009 | #12


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


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

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


ВОПРОС КАК УДАЛИТЬ все %windir%\$NtUninstall~1 через cmd или bat

Отправлено: 23:12, 15-06-2009 | #13


Аватара для Maza Faka

Ветеран


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

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


ALIEN7
Код: Выделить весь код
RD /S /Q %windir%\$NtUninstall~1

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение


Отправлено: 07:22, 16-06-2009 | #14


Googler


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

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


semiono,
Цитата semiono:
нельзяль хоть как-то отфильтровать потом файл my.reg, или может утиль есть чтоб по конкретно value каждый сейвить избирательно »
отфильтровать можно, но геморно - проще сохранить в батник:
Код: Выделить весь код
@Echo Off

Set $CMD=.\Reg_Save.CMD
Echo @Echo Off >%$CMD%
Echo CHCP 1251>>%$CMD%
Echo.>>%$CMD%

Call :SAVE_VAL "HKCU\Software\Microsoft\Windows\Currentversion\Explorer\Shell Folders" "Desktop"
Call :SAVE_VAL "HKCU\Software\Microsoft\Windows\Currentversion\Explorer\Shell Folders" "Favorites"
Call :SAVE_VAL "HKCU\Software\Microsoft\Windows\Currentversion\Explorer\Shell Folders" "My Music"
Call :SAVE_VAL "HKCU\Software\Microsoft\Windows\Currentversion\Explorer\Shell Folders" "My Pictures"

Call :SAVE_VAL "HKCU\Software\Microsoft\Windows\Currentversion\Explorer\Streams\0" "ViewView2"

EXIT

:SAVE_VAL
 Set $N=1
 For %%i In (%~2) Do Set /A $N+=1
 For /F "Tokens=%$N%* Delims=	 " %%i In ('REG Query "%~1" /v "%~2"^|FindStr /IBRC:" *%~2 *	*REG_"') Do Echo REG ADD "%~1" /v "%~2" /t %%i /d "%%j" /f>>%$CMD%
GoTo :EOF
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:07, 16-06-2009 | #15


Аватара для semiono

Ветеран


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

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


Да, былоб неплохо найти нормальный reg.exe с нормальным экспортом...
А идея хорошая, но мне однако там надо получить именно .reg
И ещё, Ваши возможности CMD меня просто пугают! Я думал CMD вообще ничего не может,
однако
For /F "Tokens=%$N%* Delims= " %%i In ('REG Query "%~1" /v "%~2"^|FindStr /IBRC:" *%~2 * *REG_"') ,\
Do Echo REG ADD "%~1" /v "%~2" /t %%i /d "%%j" /f>>%$CMD%

я даже прочесть не осилю! Крута! bash напоминает!

-------
Полезное сообщение


Отправлено: 16:26, 16-06-2009 | #16


Googler


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

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


Цитата semiono:
идея хорошая»
использование некоторых управляющих символов (CMD) в значениях строковых параметров может отрабатываться некорректно (например, двойные кавычки)... хотя, если подойти более скурпулезно, некоторые исключения тоже можно учесть в коде (те же кавычки)

Цитата semiono:
мне однако там надо получить именно .reg »
попробуй такой вариант:
Код: Выделить весь код
@Echo Off
CHCP 1251

Set $REG=%~dpn0.reg
Set $TMP=%~dpn0.tmp
Echo Windows Registry Editor Version 5.00>"%$REG%"

Call :SAVE_VAL "HKCU\Software\Microsoft\Windows\Currentversion\Explorer\Shell Folders" "Desktop"
Call :SAVE_VAL "HKCU\Software\Microsoft\Windows\Currentversion\Explorer\Shell Folders" "Favorites"
Call :SAVE_VAL "HKCU\Software\Microsoft\Windows\Currentversion\Explorer\Shell Folders" "My Music"
Call :SAVE_VAL "HKCU\Software\Microsoft\Windows\Currentversion\Explorer\Shell Folders" "My Pictures"

Call :SAVE_VAL "HKCU\Software\Microsoft\Windows\Currentversion\Explorer\Streams\0" "ViewView2"

EXIT

:SAVE_VAL
 REG Query "%~1" /v "%~2"  >Nul 2>&1
 If ErrorLevel 1  GoTo :EOF

 If Exist %$TMP% DEL /F/Q %$TMP%
 REG Export "%~1" "%$TMP%" >Nul 2>&1

 For /F "Tokens=1 Delims=:" %%i In ('Type "%$TMP%"^|FindStr /IRBNC:^"\"%~2\"^"') Do Set $N=%%i&Set $M=0
 For /F "Tokens=1 Delims=:" %%i In ('Type "%$TMP%"^|FindStr /BRNC:^"[[\"]^"') Do If %%i GTR %$N% Set $M=%%i&GoTo SAVE_REG

:SAVE_REG
 Echo.>>"%$REG%"
 Echo [%~1]>>"%$REG%"
 For /F "Tokens=1* Delims=:" %%i In ('Type "%$TMP%"^|FindStr /BRNC:^".^"') Do (
   If %%i GEQ %$N% (
      If %$M% EQU 0   Echo %%j>>"%$REG%"
      If %%i LSS %$M% Echo %%j>>"%$REG%"
   )
)
GoTo :EOF
З.Ы. есть недостаток - для каждого параметра выполняется Export и парсинг всей ветки

Последний раз редактировалось amel27, 17-06-2009 в 16:14. Причина: очепятка


Отправлено: 11:38, 17-06-2009 | #17



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] удаление содержимого папок daswer Скриптовые языки администрирования Windows 6 21-08-2013 16:19
CMD/BAT - [решено] Удаление созданных папок и файлов по времени zavoruev Скриптовые языки администрирования Windows 24 22-04-2013 10:36
VBS/WSH/JS - [решено] Удаление пустых папок VBasic forsem Скриптовые языки администрирования Windows 4 13-05-2010 09:56
CMD/BAT - [решено] *.bat файл на удаление папок по шаблону smol84 Скриптовые языки администрирования Windows 3 10-03-2009 15:49
[решено] Удаление файлов и папок ArGoth Автоматическая установка Windows 2000/XP/2003 1 26-05-2008 18:03




 
Переход