2013-10-13 45 views
1

我正在開發一個腳本類,並且我的腳本有一些問題。根據實驗室作業,我所有的語法都是正確的。不過,我不斷收到第60,1行文件錯誤結束的輸入。我已經在節目中永遠主演過,並且在相當一段時間沒有運氣的情況下檢查了所有的信函。任何幫助將不勝感激。這是腳本。VB腳本運行時錯誤輸入文件末尾

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 
+0

你可以發現其中Ekkehard.Horner指向的錯誤:

修復語法錯誤和糟糕的名字。你會看到那個文件是空的,並導致'輸入文件末尾'錯誤,因爲沒有內容。這將導致您的根本原因:數據從未寫入,因爲將被寫入的字符串是空的。 – AutomatedChaos

回答

1

假設文件不是空的,也許你需要指定文件所在的目錄?我認爲這是可以做到無論是在你的腳本:

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

或者,如果你在通過CSCRIPT命令行中運行它...

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

你可以,如果執行你的迴音之前檢查文件大小你喜歡...

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.

4

因爲你不使用「Option Explicit」,你會得到你應得的東西:你(嘗試)將行連接到ipAddrSr,但是把ipAddrStr寫入文件。所以沒有任何東西被寫入文件。通過打開`IP_Addresses.csv`文件

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

正如我在帖子中所說,我仍在學習VB腳本。我們還沒有學習Option Explicit。然而,它看起來是你找到的拼寫錯誤,我完全錯過了,所以謝謝你的迴應。 –

+0

而且你會得到你應得的讚賞。引入變量和聲明後應立即引入'Option Explicit'。沒有理由。 – AutomatedChaos