.bat 批处理读取注册表并修改的写法。

beargo 2009-08-25 10:16:25
想通过dos的BAT批处理修改注册某一键值。例如
HKEY_LOCAL_MACHINE\SOFTWARE\freeime
下的system键值为C:\Program Files\freeime
只要键值中用\就替换成\\再修改回注册表中。

C:\\Program Files\\freeime





...全文
2300 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fox000002 2009-08-26
  • 打赏
  • 举报
回复
echo off

set value=

REM 这里 delims 是 TAB 字符
for /f "tokens=1,3 delims= " %%i in ('reg query hklm\software\freeime /v system') do (
if "%%i" == " test" set value=%%j
)

echo "%value%"

REM set new_value=C:\\Program Files\\freeime

set new_value=%value:\=\\%

REM for /f "delims=\" %%i in ("%value%") do (
REM if "%new_value%"=="" (
REM set new_value=%%i
REM ) else (
REM set new_value=%new_value%\\%%i
REM )
REM )

echo %new_value%

reg add hklm\software\freeime /v system /d "%new_value%" /f >NUL

@pause
  • 打赏
  • 举报
回复
8楼说到了点子上,批处理里处理字符串才是难点。学习了。
beargo 2009-08-26
  • 打赏
  • 举报
回复
@echo off
for /f "skip=4 tokens=1,2 delims=:" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\freeime" /v system') do (
set "a=%%a"
set "b=%%b"
)
set "c=%a:~-1%:%b:\=\\%"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\freeime" /v system /t REG_SZ /d "%c%" /f
beargo 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 chrisak 的回复:]
reg怎么用及其结果怎么赋给变量我就懒得写了.
那些是写批处理的基础.这里给段替换字符串的代码:

C# code@echo off
rem 使用时把str换成要做替换的字符串set str=c:\windows\system32\
rem 清空resultset result=

:loopset chr=%str:~0,1%if/i"%str%" neq"" (set str=%str:~1%if"%chr%"=="\" (set result=%result%\\) else (set result=%result%%chr%)goto loop)
echo%result%
运行输出result变量值为c:\\windows\\system32\\
[/Quote]
您好,我刚好就是不懂reg怎么用及其结果怎么查值赋给变量。我没有写批处理的基础。恳请大大赐教~
beargo 2009-08-25
  • 打赏
  • 举报
回复
顶,5楼的方法有点不合人意。我希望是通过用dos 的REG来做批处理。但这些用法着实摸不透。例如如何用 REG QUERY 去获取注册表中指定键的值并赋予一变量。然后再通过检查替换这一变量修改后再用REG保存回去。
ncjcz 2009-08-25
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
批处理可能比较麻烦,用vbscript写一个应该简单些
beargo 2009-08-25
  • 打赏
  • 举报
回复
现在就是不能用C#啊,旧程序不是用。NET框架做的。也不需要程序,只是安装时需要用到一下,所以想建个批处理来完事就算了~~
guxingdao 2009-08-25
  • 打赏
  • 举报
回复
=_=!没那么用过,最多用C#读写过REG
bychgh 2009-08-25
  • 打赏
  • 举报
回复
帮顶,学习了
ChrisAK 2009-08-25
  • 打赏
  • 举报
回复
reg怎么用及其结果怎么赋给变量我就懒得写了.
那些是写批处理的基础.这里给段替换字符串的代码:

@echo off
rem 使用时把str换成要做替换的字符串
set str=c:\windows\system32\
rem 清空result
set result=

:loop
set chr=%str:~0,1%

if /i "%str%" neq "" (
set str=%str:~1%
if "%chr%" == "\" (set result=%result%\\) else (set result=%result%%chr%)
goto loop)
echo %result%

运行输出result变量值为c:\\windows\\system32\\
linsheng0529 2009-08-25
  • 打赏
  • 举报
回复
reg add /?
用这个

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧