如下是正常的代码 | Rem MaximeSkipLineToLookFor3GB.vbs | | Dim strSearch | | Dim strText | | Dim strFile | | Dim objFSO | | Dim objFile | | Const ForReading=1 | | Const ForWriting=2 | | Const ForAppending=8 | | strFile="c:\kugou.ini" | | subLook | | | | Function funLookUp(strText,strSearch) | | Const blnInsensitive=1 | | If Instr(1,strText,strSearch,blnInsensitive) Then | | funLookUp=strSearch & " was found" | | Else | | funLookUp=strSearch & " was not found" | | End If | | End Function | | | | Sub subLook | | Dim strLine | | Dim strText | | Dim intLine | | strSearch="[" | | Set objFSO=CreateObject("Scripting.FileSystemObject") | | Set objFile=objFSO.OpenTextFile(strFile,ForReading) | | | | Do Until objFile.AtEndOfStream | | strText=objFile.ReadLine | | strLine=funLookUp(strText,strSearch) | | If InStr(strLine,"not") Then | | intLine=objFile.Line-1 | | WScript.Echo intLine & " not at the beginning of the ini" | | Else | | intLine=objFile.Line-1 | | Wscript.Echo intLine & " is the beginning of the ini" | | objFile.Close | | Exit Do | | End If | | Loop | | WScript.Echo "Opening the file a second time..." | | Set objFile=objFSO.OpenTextFile(strFile,ForReading) | | Do Until objFile.AtEndOfStream | | If objFile.Line < intLine Then | | objFile.SkipLine | | ElseIf objFile.Line=intLine Then | | WScript.Echo "The beginning of the ini file is: " | | WScript.Echo objFile.ReadLine | | Else | | WScript.Echo "The script is over" | | objFile.Close | | WScript.Quit | | End If | | Loop | | End SubCOPY |
正确的输出是:
Microsoft (R) Windows Script Host Version 5.8
版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。
1 not at the beginning of the ini
2 not at the beginning of the ini
3 not at the beginning of the ini
4 not at the beginning of the ini
5 not at the beginning of the ini
6 not at the beginning of the ini
7 is the beginning of the ini
Opening the file a second time...
The beginning of the ini file is:
[ActiveTab]
The script is over
但是换一下,就是把sub函数中的第二个until循环放到外面,无法正常输出 | Rem MaximeSkipLineToLookFor3GB.vbs | | Dim strSearch | | Dim strText | | Dim strFile | | Dim objFSO | | Dim objFile | | Const ForReading=1 | | Const ForWriting=2 | | Const ForAppending=8 | | strFile="c:\kugou.ini" | | subLook | | Set objFSO=CreateObject("Scripting.FileSystemObject") | | Set objFile=objFSO.OpenTextFile(strFile,ForReading) | | WScript.Echo "Opening the file a second time..." | | Do Until objFile.AtEndOfStream | | If objFile.Line < intLine Then | | objFile.SkipLine | | ElseIf objFile.Line=intLine Then | | WScript.Echo "The beginning of the ini file is: " | | WScript.Echo objFile.ReadLine | | Else | | WScript.Echo "The script is over" | | objFile.Close | | WScript.Quit | | End If | | Loop | | | | Function funLookUp(strText,strSearch) | | Const blnInsensitive=1 | | If Instr(1,strText,strSearch,blnInsensitive) Then | | funLookUp=strSearch & " was found" | | Else | | funLookUp=strSearch & " was not found" | | End If | | End Function | | | | Sub subLook | | Dim strLine | | Dim strText | | Dim intLine | | strSearch="[" | | Set objFSO=CreateObject("Scripting.FileSystemObject") | | Set objFile=objFSO.OpenTextFile(strFile,ForReading) | | | | Do Until objFile.AtEndOfStream | | strText=objFile.ReadLine | | strLine=funLookUp(strText,strSearch) | | If InStr(strLine,"not") Then | | intLine=objFile.Line-1 | | WScript.Echo intLine & " not at the beginning of the ini" | | Else | | intLine=objFile.Line-1 | | Wscript.Echo intLine & " is the beginning of the ini" | | objFile.Close | | Exit Do | | End If | | Loop | | | | End SubCOPY |
错误的输出
Microsoft (R) Windows Script Host Version 5.8
版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。
1 not at the beginning of the ini
2 not at the beginning of the ini
3 not at the beginning of the ini
4 not at the beginning of the ini
5 not at the beginning of the ini
6 not at the beginning of the ini
7 is the beginning of the ini
Opening the file a second time...
The script is over
其中kugou.ini文件内容如下
Activate
Activate=1
DeepActivate=1
NewActivate=1
PlayCnt=12
[ActiveTab]
TabName=musicclub
[Collect]
NetConnectivity=1
[Crash]
LastCrashExe=
[DBCheck]
CommitError=0 |