无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3876|回复: 7
打印 上一主题 下一主题

注册表解析重新设置

[复制链接]
跳转到指定楼层
1#
发表于 2011-11-18 01:09:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
是关于输入法的,我做了一个输入法安装程序
原来的2的值是e0040804
  1. Windows Registry Editor Version 5.00
  2. [HKEY_CURRENT_USER\Keyboard Layout\Preload]
  3. "1"="00000804"
  4. "2"="e0040804"
复制代码
安装输入法后2变成了新输入法的E0200804,又增加了3变成了e0040804
  1. Windows Registry Editor Version 5.00
  2. [HKEY_CURRENT_USER\Keyboard Layout\Preload]
  3. "1"="00000804"
  4. "2"="E0200804"
  5. "3"="e0040804"
复制代码
想怎样解析这个Preload下面的2,增加一个键值改成2的值,这个增加的值是在原有基础上再递增的,因为不定有几个值,就如下面。把2固定为我的输入法的e0040804就可以了。
  1. Windows Registry Editor Version 5.00
  2. [HKEY_CURRENT_USER\Keyboard Layout\Preload]
  3. "1"="00000804"
  4. "2"="e0040802"
  5. "3"="E0400804"
  6. "4"="e0040803"
  7. "5"="e0040801"
复制代码
这个批处理应该如何写?

[ 本帖最后由 freesoft00 于 2011-11-18 23:30 编辑 ]
2#
发表于 2011-11-21 15:44:15 | 只看该作者
------------------------------分割线----------------------------------
@echo off
setlocal enabledelayedexpansion
set aa=0
echo Windows Registry Editor Version 5.00>c:\my.reg
echo.>>c:\my.reg
echo [HKEY_CURRENT_USER\Keyboard Layout\Preload]>>c:\my.reg
reg export "hkcu\Keyboard Layout\Preload" %temp%\tmp1.txt
for /f "skip=3 tokens=1,2* delims==" %%a in ('type %temp%\tmp1.txt') do (
set /a aa=!aa!+1
echo "!aa!"=%%b>>c:\my.reg
if "!aa!"=="2" echo "3"="E0200804">>c:\my.reg && set /a aa=!aa!+1
)
del %temp%\tmp1.txt >nul
pause
------------------------------分割线----------------------------------

保存为BAT文件,运行后在C盘会生成MY.REG的注册表文件,双击MY.REG应该可按您的要求在第二行后插入 "3"="E0200804",数字递增。

[ 本帖最后由 2011pzn 于 2011-11-21 16:11 编辑 ]
回复

使用道具 举报

3#
 楼主| 发表于 2011-11-21 16:22:24 | 只看该作者
谢谢,晚上了我试试
2要固定为E0200804
e0040804这个值是不确定的,因为我原来的就两个输入法,一个英文,一个智能abc,这个2就是智能abc的值,而在其他人的电脑上,也许有其他的输入法这个值就变了,所以需要解析一下,还有可能有多余两个的输入法,所以就不止
1
2
两个键值了,多余两个输入法,键值就增加了,比如
1
2
3
4
5
就要把原来的2解析后改成E0200804,然后再增加一个6改成原来的2值

[ 本帖最后由 freesoft00 于 2011-11-21 21:41 编辑 ]
回复

使用道具 举报

4#
 楼主| 发表于 2011-11-21 21:54:46 | 只看该作者
测试了一下,不对
原来的是
  1. Windows Registry Editor Version 5.00
  2. [HKEY_CURRENT_USER\Keyboard Layout\Preload]
  3. "1"="00000804"
  4. "2"="e00f0804"
  5. "3"="e0040804"
复制代码

解析后的my.reg是
  1. Windows Registry Editor Version 5.00
  2. [HKEY_CURRENT_USER\Keyboard Layout\Preload]
  3. "1"="00000804"
  4. "2"="e00f0804"
  5. "3"="E0200804"
  6. "4"="e0040804"
复制代码

应该成这样就对了
  1. Windows Registry Editor Version 5.00
  2. [HKEY_CURRENT_USER\Keyboard Layout\Preload]
  3. "1"="00000804"
  4. "2"="E0200804"
  5. "3"="e0040804"
  6. "4"="e00f0804"
复制代码
回复

使用道具 举报

5#
发表于 2011-11-22 01:57:45 | 只看该作者
哦,那我理解有误,是要在第二行插入 "2"="E0200804",第三行固定为 "3"="E0040804" 是吗?
再看这样对不对:
--------------------------------------------------分割线-----------------------------------------------
@echo off
setlocal enabledelayedexpansion
if exist %temp%\tmp*.txt del %temp%\tmp*.txt>nul
set aa=0 && set bb=0
reg export "hkcu\Keyboard Layout\Preload" %temp%\tmp1.txt
for /f "skip=3 tokens=1,2* delims==" %%a in ('type %temp%\tmp1.txt') do (
set /a aa=!aa!+1
echo "!aa!"=%%b>>%temp%\tmp2.txt
if "!aa!"=="1" echo "2"="E0200804">>%temp%\tmp2.txt && set /a aa=!aa!+1
)
echo Windows Registry Editor Version 5.00>c:\my.reg
echo.>>c:\my.reg
echo [HKEY_CURRENT_USER\Keyboard Layout\Preload]>>c:\my.reg
for /f "tokens=1,2* delims==" %%a in ('type %temp%\tmp2.txt') do (
set /a bb=!bb!+1
if "!bb!"=="3" (set k1=%%b && echo "3"="E0040804">>c:\my.reg) else (
if /i %%b=="E0040804" (echo "!bb!"=!k1!>>c:\my.reg) else (
echo "!bb!"=%%b>>c:\my.reg
)))
pause
--------------------------------------------------分割线-----------------------------------------------
(匆忙写的,比较繁琐,应该可以优化一下的)
回复

使用道具 举报

6#
 楼主| 发表于 2011-11-22 02:11:10 | 只看该作者
再次感谢,只对了一半,第三行固定为 "3"="E0040804"
比如我有两个输入法键值1不管,键值2E0222204,就是把现有的2改成E0200804,然后再添加一个键值3写成2E0222204
如果我有三个输入法,那就添加一个4写成2E0222204
如果我装有四个输入法,那就添加一个4写成2E0222204
键值的多少和数值数据是不确定的,唯一确定的就是2要改成E0200804,然后再在原来的基础上递增一个键值写入为原料的2键值数据

[ 本帖最后由 freesoft00 于 2011-11-22 02:13 编辑 ]
回复

使用道具 举报

7#
发表于 2011-11-22 03:13:28 | 只看该作者
对不起呀,我理解能力太低啦。

-----------------------------------------分割线------------------------------------------------
@echo off
setlocal enabledelayedexpansion
if exist %temp%\tmp*.txt del %temp%\tmp*.txt>nul
set n=1
reg export "hkcu\Keyboard Layout\Preload" %temp%\tmp1.txt
for /f "skip=3" %%a in ('type %temp%\tmp1.txt') do set /a n=!n!+1
type %temp%\tmp1.txt >%temp%\tmp2.txt
for /f "tokens=1,2* delims==" %%a in ('findstr /c:"\"2"\" %temp%\tmp2.txt') do set k=%%b
echo Windows Registry Editor Version 5.00>c:\my.reg
echo.>>c:\my.reg
echo [HKEY_CURRENT_USER\Keyboard Layout\Preload]>>c:\my.reg
for /f "skip=3 tokens=1,2* delims==" %%a in (%temp%\tmp2.txt) do (
if "!k!"=="%%b" (echo %%a="E0200804">>c:\my.reg) else (
echo %%a=%%b>>c:\my.reg
))
echo "!n!"=!k!>>c:\my.reg
pause
-----------------------------------------分割线------------------------------------------------
重新整了一下,应该可以了吧

[ 本帖最后由 2011pzn 于 2011-11-22 13:55 编辑 ]
回复

使用道具 举报

8#
 楼主| 发表于 2011-11-23 19:14:37 | 只看该作者
再次感谢,这次可以了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-16 20:37

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表