批处理findstr和for 的应用问题
问题:
我想写一个优化U盘弹出的批处理。 原理:因为电脑连接的U盘越多,注册表占用容量越大,比较差的解决的办法是:将U盘相关的注册表都删除掉。
但是,因为位置比较敏感,所以,默认是SYSTEM权限才能完全控制的,所以需要注册提权!
又因为U盘品牌不同,注册表名称不一,所以,需要先将注册表导出,然后分离出注册表键值和注册表主项,将分享出来的注册表项加上[1 5 17]这样REGINI能识别的格式。
以前在顽固IE清除中分离出注册表键值的方法是使用FOR+echo:
部分代码:
reg export "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{450D8FBA-AD25-11D0-98A8-0800361B1103}" NameSpace.reg
type NameSpace.reg>>NameSpace.txt
for /f "eol=@ skip=2 delims=" %%a in (NameSpace.txt) do (
set "var=%%a"
call echo %%var:~1,-1%% [1 5 7 17]>>reg.ini)
for /f "delims=" %%i in (reg.ini) do (
echo "%%i"|find "HKEY_LOCAL_MACHINE" &&echo %%i>>new.txt)
del /f /q reg.ini
ren new.txt reg.ini
regini reg.ini
因为实验了一下,FOR+ECHO并不适合U盘注册表项提权。
所以,希望结合FOR和findstr来分离出HKLM注册表项。
但是,代码不会写。。
特上来求助,最好提供示例代码!!
用户系统信息:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)