- 帖子
- 2
- 积分
- 106
- 技术
- 0
- 捐助
- 0
- 注册时间
- 2009-12-1
|
小子新手一个,有个问题昨天困扰了我一整天,特来求助各位大虾。
我要从注册表导出一个文件,代码如下:
reg query "HKEY_CURRENT_USER\Software\VB and VBA Program Settings\汇众软件\Settings" /v NJBSVName >1.txt
在我自己的电脑上,1.txt的内容是正常的:
! REG.EXE VERSION 3.0
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\汇众软件\Settings
NJBDBName REG_SZ NEW
但是到了另外一台电脑上,1.txt的内容却变成了
! REG.EXE VERSION 3.0
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\汇众软件\Settin NJBSVName REG_SZ P199
各位大虾,两者不同的地方,就是上面红色的部分,不仅一行没有显示完,还没有换行!
我猜想,这可能是两台电脑的环境不同造成的,但是我对比了一下环境变量,太菜了,也看不出有什么区别。
两台电脑都是XP,只不过,一台是SP2,一台是SP3。
就是这个问题,造成我后面的for语句无法继续执行,因为我用了skip=4,到另外一台电脑上,取出来的就是空值了
for语句如下:
for /f "skip=4 tokens=3" %%a in (1.txt) do set svname=%%a
忽略前4行,取第5行的第三个值,就是注册表的值(例如NEW 或 p199)
我想,这个问题本来是可以继续书写比较复杂的for语句,按NJBSVName这个关键字符串来截取一段,再取后面的P199值,但是我想搞清楚这到底是什么问题,为什么在不同的电脑上,同样一个语句,结果却不同,能否有办法解决?最后,如果实在无法解决,再写比较复杂的for语句。如果各位大虾不嫌麻烦,就最后帮我把这段代码写出来吧,要能兼容这两种文件内容,因为,还有很多台电脑等着去执行这段代码,我也不知道他们执行的结果又是什么样子。
这件事,真是让我对批处理有些灰心了,我想写程序,最怕的就是执行环境不同了,批处理的兼容性居然这么差,如此简单的语句都会碰到这种问题,我真想知道,各位大虾都是怎么解决这个问题的? |
|