中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-24 18:50
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]接受命令行参数的VBS发生错误,请指正 查看 764 回复 6
楼 主 [求助]接受命令行参数的VBS发生错误,请指正 发表于 2007-09-04 01:39 ·  中国 广东 广州 电信
高级用户
★★
我思故我在
积分 512
发帖 228
注册 2007-01-21 10:31
19年会员
UID 77225
性别 男
状态 离线
写了一个接受命令行参数的VBS,用于读取文本的某一行,比如输入cscript

test.vbs test.txt 1即读取test.txt的第一行字符串,但是不知道哪里出错了,请各

位达人帮忙看下:

If WScript.Arguments.Count=0 Then
WScript.Echo "Sorry,参数错误."
WScript.Quit
End If

Dim arr()
Dim objFSO,objFile,WSH
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WSH=WScript.Arguments
Set objFile = objFSO.OpenTextFile(WSH(0), 1)
Do Until objFile.AtEndOfStream
For i=1 To WSH.Count-1
If objFile.Line = WSH(i) Then
theline=objFile.ReadLine
WScript.Echo theline
End If
Next
objFile.SkipLine
Loop
objFile.Close
我确实是只菜鸟,而且这里X人太多,所以我不敢装X。谁要再说我装X,我就XXOO他。
2 发表于 2007-09-04 12:48 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
If WScript.Arguments.Count = 0 Then
WScript.Echo "Sorry,参数错误."
WScript.Quit
End If

Dim
objFSO,objFile,WSArg
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WSArg = WScript.Arguments
Set objFile = objFSO.OpenTextFile(WSArg(0), 1)
Do Until objFile.AtEndOfStream
If objFile.Line = Int(WSArg(1)) Then
WScript.Echo objFile.ReadLine
Exit Do
End If
objFile.SkipLine
Loop
objFile.Close

Set
objFile = Nothing
Set
WSArg = Nothing
Set
objFSO = Nothing
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
qinbuer +4 2007-09-04 16:47
3 发表于 2007-09-04 16:47 ·  中国 广东 广州 电信
高级用户
★★
我思故我在
积分 512
发帖 228
注册 2007-01-21 10:31
19年会员
UID 77225
性别 男
状态 离线
又是slore兄的热心指点,实在非常感谢。^_^
我确实是只菜鸟,而且这里X人太多,所以我不敢装X。谁要再说我装X,我就XXOO他。
4 发表于 2007-09-04 16:52 ·  中国 广东 广州 电信
高级用户
★★
我思故我在
积分 512
发帖 228
注册 2007-01-21 10:31
19年会员
UID 77225
性别 男
状态 离线
不好意思,有一问题没有指明,就是我的命令行参数不只一个,其数目不能确定,比

如cscript test.vbs test.txt 1 2 3即读取test.txt文本的1、2、3行,而兄的代码只能

接受除了指定文本之外的一个参数。
我确实是只菜鸟,而且这里X人太多,所以我不敢装X。谁要再说我装X,我就XXOO他。
5 发表于 2007-09-04 17:09 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
If WScript.Arguments.Count < 2 Then
WScript.Echo "Sorry,参数错误."
WScript.Quit
End If

Dim
objFSO,objFile,WSArg,NotSkip
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WSArg = WScript.Arguments
Set objFile = objFSO.OpenTextFile(WSArg(0), 1)
Do Until objFile.AtEndOfStream
NotSkip = False
For
i = 1 To WSArg.Count - 1
If objFile.Line = Int(WSArg(i)) Then
WScript.Echo objFile.ReadLine
NotSkip = True
Exit For
End If
Next
If
NotSkip = False Then objFile.SkipLine
Loop
objFile.Close

Set
objFile = Nothing
Set
WSArg = Nothing
Set
objFSO = Nothing
6 发表于 2007-09-04 17:13 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
行数按大小顺序写参数……虽然可以有随便写的。。。不过还是就这样了不改了
7 发表于 2007-09-05 12:04 ·  中国 广东 广州 电信
高级用户
★★
我思故我在
积分 512
发帖 228
注册 2007-01-21 10:31
19年会员
UID 77225
性别 男
状态 离线
不胜感激!
我确实是只菜鸟,而且这里X人太多,所以我不敢装X。谁要再说我装X,我就XXOO他。
论坛跳转: