标题: [注册表类] 批处理怎样截取注册表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- @echo off
- set "r=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib"
- for %%a in (Counter Help) do call:a %%a
- del /q $tmp$&exit
- :a
- reg query "%r%\004" /v %1 >$tmp$
- fr $tmp$ -ric:\\0 -t:\r\n
- setlocal enabledelayedexpansion
- for /f "skip=5 delims=" %%a in ($tmp$) do set/a n+=1&set a_!n!=%%a&if !n!==2 set n=0
- set/a n+=1
- reg add "%r%" /v "Last %1" /d "!a_%n%!" /t REG_DWORD /f>nul
- Endlocal
复制代码
[ 本帖最后由 hanyeguxing 于 2010-5-13 16:16 编辑 ]
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |