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

[文件操作] 两台电脑执行重定向到文件,文件内容却不同!

小子新手一个,有个问题昨天困扰了我一整天,特来求助各位大虾。
我要从注册表导出一个文件,代码如下:
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语句。如果各位大虾不嫌麻烦,就最后帮我把这段代码写出来吧,要能兼容这两种文件内容,因为,还有很多台电脑等着去执行这段代码,我也不知道他们执行的结果又是什么样子。
这件事,真是让我对批处理有些灰心了,我想写程序,最怕的就是执行环境不同了,批处理的兼容性居然这么差,如此简单的语句都会碰到这种问题,我真想知道,各位大虾都是怎么解决这个问题的?

两台电脑都是XP,只不过,一台是SP2,一台是SP3。
========================================
这就是关键!
SP2的reg.exe命令有bug

批处理的兼容性居然这么差
========================================
你应该说微软的操作系统兼容性居然这么差!没看到几乎所有软件都要标明操作系统版本吗?
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 2楼 的帖子

不是吧,我比较了两台电脑的REG程序,版本都是一样的3.0,而且,用命令行方式执行REG,在CMD里面结果都是对的,都是一样的,跟我最初的1.txt内容相同,但是导到1.txt以后,就不一样了

TOP

回复 3楼 的帖子

这个,可以是。
因为XP SP2里面reg命令的bug在命令行里面是体现不出来的,但是在重定向输出到文件里面的时候就会体现出来。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表