CMD/BAT - [решено] Удаление папок по критериям

Аватара пользователя
semiono

Re: CMD/BAT - [решено] Удаление папок по критериям

Сообщение semiono »

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
Аватара пользователя
semiono

Re: CMD/BAT - [решено] Удаление папок по критериям

Сообщение semiono »

offtop: а что @reg export /? только ключами сейвить? бли, как неудобно!!

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



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

ай ай, микросовт!
Аватара пользователя
ALIEN7

Re: CMD/BAT - [решено] Удаление папок по критериям

Сообщение ALIEN7 »

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

Re: CMD/BAT - [решено] Удаление папок по критериям

Сообщение amel27 »

semiono,
Цитата semiono:



нельзяль хоть как-то отфильтровать потом файл my.reg, или может утиль есть чтоб по конкретно value каждый сейвить избирательно
CMD/BAT - [решено] Удаление папок по критериям




отфильтровать можно, но геморно - проще сохранить в батник:



Код:

Код: Выделить всё

@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
Аватара пользователя
semiono

Re: CMD/BAT - [решено] Удаление папок по критериям

Сообщение semiono »

Да, былоб неплохо найти нормальный 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 напоминает!
Аватара пользователя
amel27

Re: CMD/BAT - [решено] Удаление папок по критериям

Сообщение amel27 »

Цитата semiono:



идея хорошая
CMD/BAT - [решено] Удаление папок по критериям




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




Цитата semiono:



мне однако там надо получить именно .reg
CMD/BAT - [решено] Удаление папок по критериям




попробуй такой вариант:



Код:

Код: Выделить всё

@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 и парсинг всей ветки
Ответить

Вернуться в «Скриптовые языки администрирования Windows»