Board logo

标题: [注册表类] 批处理怎样截取注册表RG_MULTI_SZ类型值中字符串? [打印本页]

作者: bxb1816    时间: 2010-5-13 12:50     标题: 批处理怎样截取注册表RG_MULTI_SZ类型值中字符串?

要修改 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib] 中"Last Counter"和"Last Help"这两项的值,使之与 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\004]中"Counter"和"Help"两项保存的最大值相同。

以004中Counter为例,其值为:
1\01847\02\0System\04\0Memory\06\0% Processor Time\010\0File Read Operations/sec\012\ ......\06236\0Network Bytes Received/sec\06238\0Network Receive Errors/sec\0\0

即我要取得的值为6238,然后将其赋值给Perflib中Last Counter项.
我目前想到的思路是
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\004" /v Counter >txt.txt
将值导出到文本里,再操作,接下来就搞不定了.
请问按我这方法如何从文本中截取出来呢?

或者有什么更好的思路吗?
作者: hanyeguxing    时间: 2010-5-13 15:32

fr为第三方命令行程序:也可以使用sed等。
fr下载地址:http://ishare.iask.sina.com.cn/f/7088512.html
  1. @echo off
  2. set "r=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib"
  3. for %%a in (Counter Help) do call:a %%a
  4. del /q $tmp$&exit
  5. :a
  6. reg query "%r%\004" /v %1 >$tmp$
  7. fr $tmp$ -ric:\\0 -t:\r\n
  8. setlocal enabledelayedexpansion
  9. for /f "skip=5 delims=" %%a in ($tmp$) do set/a n+=1&set a_!n!=%%a&if !n!==2 set n=0
  10. set/a n+=1
  11. reg add "%r%" /v "Last %1" /d "!a_%n%!" /t REG_DWORD /f>nul
  12. Endlocal
复制代码

[ 本帖最后由 hanyeguxing 于 2010-5-13 16:16 编辑 ]




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2