| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2308 人关注过本帖
标题:求大神帮忙写一个VBS代码
只看楼主 加入收藏
sulli
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-10-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
求大神帮忙写一个VBS代码
最近单位要装一批电脑,每台电脑有个软件,这个软件客户端都有一个不同的主机号,主机号对应的一串注册码,主机号和码都存在C:\ImPOS\ConfigFile\PosID.ini文件下,能不能帮忙写个VBS,点开就弹个框输入主机号,点确定以后就自动把PosID.ini里对应的CashRegisterCode和CDKey改好呀?
付上PosID.ini原文
程序代码:
[ID]
CashRegisterCode     =4708
CDKey                =3SZKT-JPB9B-UVC80-41CZP-50681-63631231
Market               =1147


机器对应的注册号
程序代码:
4701    8GZI0-0LBYZ-1TCX0-0ACC0-50674-63631231
4702    YMZO6-2CBBD-WRCZ0-4KCLP-50675-63631231
4703    01ZKR-0LBYZ-VJCT0-4MC2L-50676-63631231
4704    G7Z9Q-H5BKX-APCV0-0JCFP-50677-63631231
4705    KSZYU-JPB9B-J0CV5-X8CHL-50678-63631231
4706    YIZK2-0LBYZ-3VCZ0-4ECG4-50679-63631231
4707    67ZQ1-H5BKX-R8CXA-0YC2H-50680-63631231
4708    3SZKT-JPB9B-UVC80-41CZP-50681-63631231
4709    ZCZ7R-0LBYZ-3VCZ0-40CJ0-50682-63631231
4710    19ZIR-0LBYZ-IXCX0-HMCYH-50001-63631231
4711    9AZ5Z-2CBBD-THC80-0LCIL-50002-63631231
4712    LMZOG-0LBYZ-HJCZ3-4ECG4-50003-63631231
4713    GOZCT-H5BKX-DZCV0-4LC3P-50004-63631231
4714    L5ZEN-JPB9B-THCR0-X8CHL-50005-63631231
4715    Y1ZY9-0LBYZ-ZHCZE-0ICK8-50006-63631231
4716    71Z3X-2CBBD-TVCZA-47CBL-50007-63631231
4717    YIZK2-JPB9B-BJC40-T4CD8-50008-63631231
搜索更多相关主题的帖子: VBS 代码 主机 ini 对应 
2019-10-10 15:29
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:20 
太久了没写 VBS 代码,都忘了。

1、输入,使用 inputbox 对话框,
2、访问文件,使用 FSO 结象,这块给忘了,临时百度下。
3、写完了格式判断后,发现结束脚本的命令给忘了,只好使用大型IF块了。
4、字符串转数字的命令给忘了,只好使用字符来比较了。val不对,value也不对。

流程
1、输入,判断是否输入符合规定,转数字 ,>999 或 >4700 ,<4718 或 <10000 。
2、使用 FSO ,以文本文件打开注册码文件
3、循环 ,读一行,然后取前4个字符与输入的内容进行比较,成功,设置变量,退循环
4、判断是否设置了变量,设置了,则写结果文件

程序代码:
dim s ,t
dim a1 ,a2, a3
dim fso ,f

dim f1,f2
f1="d:\注册码.txt"        '注册码文件路径
f2="d:\\PosID.ini"        '注册文件位置

dim y1,y2
y1="4701"            '注册码的上下限,包括这个值
y2="4719"

s=inputbox("请输入主机号,格式为4位数字,范围为" & y1 & "-" & y2 & "")

if s < y1 or s > y2 then 
     msgbox  "主机号输入超范围,范围为" & y1 & "-" & y2 & "",16
else
     '格式正确处理

'寻找注册码
Set fso = CreateObject("Scripting.FileSystemObject")
set f=fso.opentextfile(f1,1,false) 

do while not f.atendofstream
   t=f.readline()
   if left(t,4)=s then              '找到
        a1="CashRegisterCode     =" & s
        a2="CDKey                =" & mid(t,9)
        a3="Market               =1147"      '这个值是固定的吗?
        exit do
    end if
loop
f.close

if a1<>"" then         '是否设置了变量,是,表示找到了注册码
    set f=fso.opentextfile(f2,2,true) 
    f.writeline "[ID]"
    f.writeline  a1
    f.writeline  a2
    f.writeline  a3
    f.close
    msgbox "注册码写入成功",64
else
    msgbox "未找到注册码,写入失败",16
end if

set fso = nothing

end if 

授人于鱼,不如授人于渔
早已停用QQ了
2019-10-10 22:44
sulli
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-10-10
收藏
得分:0 
大神好牛牛呀。这回不用一个一个改了。。。太好了。。。
2019-10-11 09:02
sulli
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-10-10
收藏
得分:0 
又找出来一个办法,能把两个文件合二而一,最后还带删除的。
程序代码:
'4701    8GZI0-0LBYZ-1TCX0-0ACC0-50674-63631231
'4702    YMZO6-2CBBD-WRCZ0-4KCLP-50675-63631231
'4703    01ZKR-0LBYZ-VJCT0-4MC2L-50676-63631231
'4704    G7Z9Q-H5BKX-APCV0-0JCFP-50677-63631231
'4705    KSZYU-JPB9B-J0CV5-X8CHL-50678-63631231
'4706    YIZK2-0LBYZ-3VCZ0-4ECG4-50679-63631231
'4707    67ZQ1-H5BKX-R8CXA-0YC2H-50680-63631231
'4708    3SZKT-JPB9B-UVC80-41CZP-50681-63631231
'4709    ZCZ7R-0LBYZ-3VCZ0-40CJ0-50682-63631231
'4710    19ZIR-0LBYZ-IXCX0-HMCYH-50001-63631231
'4711    9AZ5Z-2CBBD-THC80-0LCIL-50002-63631231
'4712    LMZOG-0LBYZ-HJCZ3-4ECG4-50003-63631231
'4713    GOZCT-H5BKX-DZCV0-4LC3P-50004-63631231
'4714    L5ZEN-JPB9B-THCR0-X8CHL-50005-63631231
'4715    Y1ZY9-0LBYZ-ZHCZE-0ICK8-50006-63631231
'4716    71Z3X-2CBBD-TVCZA-47CBL-50007-63631231
'4717    YIZK2-JPB9B-BJC40-T4CD8-50008-63631231


i = ""
i = InputBox("请输入4机器码","自动注册","4701")
If i = "" Then
MsgBox "机器码错误", vbSystemModal
WScript.Quit()
End If
f = WScript.ScriptFullname
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oTextStream = oFSO.OpenTextFile(f, 1)
s = oTextStream.ReadAll()
oTextStream.Close()
Set oRegExp = New RegExp
oRegExp.MultiLine = True
oRegExp.Pattern = "^'" & i & " (.{38})\r\n"
Set oMatches = oRegExp.Execute(s)
If oMatches.Count = 0 Then
MsgBox "机器码错误", vbSystemModal
WScript.Quit()
End If
sn = oMatches.Item(0).SubMatches.Item(0)
f = "C:\ImPOS\ConfigFile\PosID.ini"
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oTextStream = oFSO.OpenTextFile(f, 1)
s = oTextStream.ReadLine() & vbCrLf
s = s & "CashRegisterCode =" & i & vbCrLf
s = s & "CDKey =" & sn & vbCrLf
oTextStream.SkipLine()
oTextStream.SkipLine()
s = s & oTextStream.ReadLine() & vbCrLf
oTextStream.Close()
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oTextStream = oFSO.OpenTextFile(f, 2)
oTextStream.Write s
oTextStream.Close()
MsgBox s, vbSystemModal, "写入成功"

Set DEL=CreateObject("Scripting.FileSystemObject")
DEL.DeleteFile WScript.ScriptFullName


[此贴子已经被作者于2019-10-13 17:09编辑过]

2019-10-13 17:08
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
这个使用的是 正则表达式,这个是 简化代码的基本技能了,学BASIC早,这块不熟悉,不记得使用这个。

另外,读内容时,使用的跳行读,需要文件内容行数固定,否则就出错。
------------
如果文件内容行数固定,可以使用跳行读。内容少时,其他数据不变量,可以按我那种直接固定写入。
如果是标准 INI 文件,等号前后没有空格的,也可以使用 读写INI的标题函数还读写。
内容很多时,只能读一行,分析一行,找到所需要行替换内容,最后再写入文件。

select case left(s,22)
case "CashRegisterCode     ="
   s1=s1 & vbcrlf & "CashRegisterCode     =" & sn
case "CDKey                ="
   s1=s1 & vbcrlf & "CDKey                =" & cdk
case else
   s1= s1 & vbcrlf & s
end select
s1=mid(s1,2)     '去掉前导空行   
最后把s1写入文件

授人于鱼,不如授人于渔
早已停用QQ了
2019-10-13 21:24
快速回复:求大神帮忙写一个VBS代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019916 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved