[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[注册表类] [已解决]批处理如何操作REG_MULTI_SZ 类的注册表值?

想法:
把REG_MULTI_SZ多行字符串第一行删除,只保留第3行(第2行是空行)

1、用Reg export 导出已存在的多行字符串(REG_MULTI_SZ)到TEMP.txt文件;(已完成)
2、用VBS脚本把导出的TEMP.TXT编码转换为ANSI;(已完成)
3、用For命令把其中的多行字符串(已经成为6e,00,76,00,34,00,5f,00,64,00,69,00,73,00,70,00,00,00,00,00形式)赋值给变量cc(已完成)
4、Reg add 写入的REG_MULTI_SZ必须是字符,而非6e,00,76,00……这种形式的,该如何做呢?


已解决,谢谢 寒夜孤星 的指导,已经调整了思路,代码比之前要精简不少,谢谢。

[ 本帖最后由 gudou 于 2010-5-4 14:11 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

楼主要提供REG EXPORT HKLM\SOFTWARE\BeTwin\Workplaces\Host\WP_Hardware\DISPLAY_01 "%temp%\temp.txt">nul导出的文本内容,最好上传

原帖由 gudou 于 2010-5-2 22:35 发表
4、Reg add 写入的REG_MULTI_SZ必须是字符,而非6e,00,76,00……这种形式的,该如何做呢

如果想用reg add,那就需要把16进制数据转换成字符。这个纯批处理是做不到的。
实际上,楼主最开始就应该考虑使用reg query返回键值的,然后使用reg add来操作

[ 本帖最后由 hanyeguxing 于 2010-5-3 00:11 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

1,实际上可以不用Reg export ,而使用reg query,这个时候返回的REG_MULTI_SZ是字符值,而不是16进制数据,经过处理后使用reg add修改原键
2,如果使用Reg export 了,这个时候获得的REG_MULTI_SZ是16进制值,修改后,要使用reg import导回该文件。
下面给出了一个简单示例:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "r=HKLM\SOFTWARE\实验"
  3. ::将%SYSTEMDRIVE%与%WINDIR%分组添加到注册表中,键名:测试
  4. reg add "%r%" /v "测试" /t REG_MULTI_SZ /s # /d "%SYSTEMDRIVE%#%WINDIR%" /f
  5. ::获取为变量示例
  6. for /f "skip=4 tokens=3" %%a in ('reg query "%r%" /v "测试"') do set a=%%a&set a=!a:\0=;!&for %%b in (!a!) do echo.各个值%%b
  7. ::导出为reg文件
  8. reg export "%r%" 实验.reg
  9. ::删除实验内容
  10. reg delete "%r%" /f
  11. pause
复制代码

[ 本帖最后由 hanyeguxing 于 2010-5-3 02:23 编辑 ]
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表