【问题标题】:VB script run time error input past end of fileVB脚本运行时错误输入超过文件末尾
【发布时间】:2013-10-20 22:31:11
【问题描述】:

我正在上脚本课,但我的脚本有一些问题。根据实验室作业,我所有的语法都是正确的。但是,我在第 60,1 行不断收到文件末尾错误的输入。我一直在看这个节目,并且很长一段时间都没有运气检查所有行的字母。任何帮助将不胜感激。这是脚本。

 dim ipAddress(5,3)
 ipAddress(0,0)="192.168.10.11"
 ipAddress(0,1)="192.168.10.12"
 ipAddress(0,2)="192.168.10.13"
 ipAddress(0,3)="192.168.10.14"
 ipAddress(1,0)="192.168.10.19"
 ipAddress(1,1)="192.168.10.20"
 ipAddress(1,2)="192.168.10.21"
 ipAddress(1,3)="192.168.10.22"
 ipAddress(2,0)="192.168.10.27"
 ipAddress(2,1)="192.168.10.28"
 ipAddress(2,2)="192.168.10.29"
 ipAddress(2,3)="192.168.10.30"
 ipAddress(3,0)="192.168.10.35"
 ipAddress(3,1)="192.168.10.36"
 ipAddress(3,2)="192.168.10.37"
 ipAddress(3,3)="192.168.10.38"
 ipAddress(4,0)="192.168.10.43"
 ipAddress(4,1)="192.168.10.44"
 ipAddress(4,2)="192.168.10.45"
 ipAddress(4,3)="192.168.10.46"
 ipAddress(5,0)="192.168.10.51"
 ipAddress(5,1)="192.168.10.52"
 ipAddress(5,2)="192.168.10.53"
 ipAddress(5,3)="192.168.10.54" 

const READ = 1
const WRITE = 2
const APPEND = 8
const ASCII = 0

dim fileName
fileName = "IP_Addresses.csv"
dim ipAddrStr
ipAddrStr = ""
dim fso
Set fso = Wscript.CreateObject("Scripting.FileSystemObject") 
Set ipFileObj = fso.CreateTextFile(fileName,True,ASCII)

For room = 0 to 5
  For computer = 0 to 3
    ipAddrSr = CStr(room+100) & "," & CStr(computer+1) & "," ipAddress(room,computer)
     & vbCrlf
    ipFileObj.write(ipAddrStr)
  Next
Next

ipFileObj.close

Set ipFileObj = fso.OpenTextFile(fileName,READ,ASCII)
WScript.Echo ipFileObj.ReadAll **' this is line 60**
ipFileObj.Close

【问题讨论】:

  • 您可以通过打开 IP_Addresses.csv 文件找到 Ekkehard.Horner 指向的错误。您会看到该文件为空并导致input past end of file 错误,因为没有内容。这将导致您找到根本原因:从未写入数据,因为要写入的字符串为空。

标签: vbscript


【解决方案1】:

由于您不使用“选项显式”,因此您将得到应得的结果:您(尝试)将这些行连接到 ipAddrSr 但将 ipAddrStr 写入文件。所以没有任何东西被写入文件。

将语法错误和错误名称修复为:

ipAddrStr = CStr(room+100) & "," & CStr(computer+1) & "," & ipAddress(room,computer) & vbCrlf

【讨论】:

  • 正如我在帖子中所说,我仍在学习VB脚本。我们还没有学习 Option Explicit。但是,您发现的拼写错误似乎我完全错过了,所以感谢您的回复。
  • 你得到了你应得的支持。 Option Explicit 应在引入变量和声明后立即引入。没有任何借口。
【解决方案2】:

假设文件不是空的,也许你需要指定文件所在的目录?我认为这可以在您的脚本中完成:

fileName = "c:\your_directory\IP_Addresses.csv"

或者如果你通过 cscript 在命令行中运行它...

cscript.exe your.vbs "c:\your_directory\IP_Addresses.csv"

如果您愿意,可以在执行 Echo 之前检查文件大小...

if fileName.size > 0 then 
    Set ipFileObj = fso.OpenTextFile(fileName,READ,ASCII)
    WScript.Echo ipFileObj.ReadAll **' this is line 60**
    ipFileObj.Close
else 
    WScript.Echo = "File was empty" 
end if 

查看将参数传递给脚本的详细信息here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多