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

[注册表类] 批处理怎样截取注册表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
将值导出到文本里,再操作,接下来就搞不定了.
请问按我这方法如何从文本中截取出来呢?

或者有什么更好的思路吗?

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 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表