2013-07-17 69 views
1

我有一個提供給我的VBS文件,並且我對其進行了小的更改。當我雙擊它時腳本運行正常,但是當它設置爲按計劃任務運行時,狀態保持爲「正在運行」;通常任務在幾秒鐘內完成。.vbs腳本在按預定任務運行時卡住了

任何人都可以提出爲什麼這可能是?

由於在無人看管的VBS

wscript.echo "VBScript Create_TaxiCheck_File" 

Const InputFile = "C:\TaxiCheckLive\TaxiCheck_Data.txt" 
Const OutputFile = "C:\TaxiCheckLive\TaxiCheck_Formatted.txt" 
Const CSVFile = "C:\TaxiCheckLive\ChelmsfordExtract.csv" 
Const ForReading = 1 
Const ForWriting = 2 
Const ForAppending = 8 
Dim fso 
Dim I 
Dim IF1 
Dim OF1 
Dim InputLine 
Dim Outputline 
Dim comma 

Set fso = CreateObject("Scripting.FileSystemObject") 

'check input file exists 
if (fso.fileexists(InputFile)) then 
    wscript.echo "Input file exists: " & InputFile 
    'Write to log file (File exists) 
    Set LogFile = fso.OpenTextFile("LogFile.txt", ForAppending) 
    LogFile.WriteLine DateInfo & Now & " - OK, Input file exists" 
    LogFile.close 
Else 
     'Write to log file (File does not exist) 
    Set LogFile = fso.OpenTextFile("LogFile.txt", ForAppending) 
    LogFile.WriteLine DateInfo & Now & " - Error, input file does not exist, database export has not run!" & VbCrLf 
    LogFile.close 
    wscript.Quit(9) 
end if 

'if exists then delete output file 
if (fso.fileexists(OutputFile)) then 
    wscript.echo "Deleting file: " & OutputFile 
    Set OF1 = fso.GetFile(OutputFile) 
    OF1.Delete 
end if 

'create output file 
wscript.echo "Creating output file: " & OutputFile 
Set OF1 = fso.CreateTextFile(OutputFile, True) 
OF1.Close 

'if exists then delete CSV file 
if (fso.fileexists(CSVFile)) then 
    wscript.echo "Deleting file: " & CSVFile 
    Set OF1 = fso.GetFile(CSVFile) 
    OF1.Delete 
end if 

'create formated output file. 
wscript.echo "Create formated output file." 

Set IF1 = fso.OpenTextFile(InputFile, ForReading) 
Set OF1 = fso.OpenTextFile(OutputFile, ForWriting) 

Outputline = "MODE,VEH_REG_NO_NO_SPACES,VEH_MAKE,VEH_MODEL,VEH_COLOUR,LIC_NUMBER" 
OF1.WriteLine Outputline 
Outputline = "D,*" 
OF1.WriteLine Outputline 
Outputline = "" 

Do While Not IF1.AtEndOfStream 
    InputLine = IF1.ReadLine 

    Outputline = "I," + InputLine 

    OF1.WriteLine Outputline 
    Outputline = "" 

Loop 

'copy output file to CSV file 
fso.CopyFile OutputFile, CSVFile 

'close input and output files 
IF1.Close 
OF1.Close 

'delete input and output files 
Set OF2 = fso.GetFile(InputFile) 
OF2.Delete 
Set OF3 = fso.GetFile(OutputFile) 
OF3.Delete 

'ftp file to firmstep ftp site 
Set WshShell = WScript.CreateObject("WScript.Shell") 
WshShell.Run("%windir%\system32\ftp.exe -s:C:\TaxiCheckLive\ftpcommands.txt") 
wscript.echo "VBScript Create_TaxiCheck_File Ended Successfully" 

'Write to log file (complete) 
Set LogFile = fso.OpenTextFile("LogFile.txt", ForAppending) 
LogFile.WriteLine DateInfo & Now & " - Script completed running" & VbCrLf 
LogFile.close 

wscript.Quit(1) 
+2

通常這意味着資源沒有關閉,但是,它看起來像關閉了所有文件和進程......您是否看到LogFile.txt中的「Script completed running」? – Papasmile

+0

我不會在按預定任務運行的腳本中使用'WScript.Echo'。除非出現錯誤,否則我還建議不要使用非零退出代碼退出。你的日誌文件說什麼?當在LogFile.Close和wscript.Quit(1)之間添加一行'WshShell.LogEvent 4','Task complete。''時,您是否在應用程序事件日誌中看到信息事件「Task complete.'? –

回答

1

wscript.echo可能會導致問題,因爲該腳本將被等待有人來打「確定」按鈕。刪除它們或將它們評論出來。

0

我有一個類似的問題。

我的計劃任務正在特定用戶下運行。使用MMC的組件服務管理單元我需要爲用戶提供「啓動和激活」權限。一旦完成,計劃任務就可以正常運行。

行'CreateObject(「Scripting.FileSystemObject」)'將需要我相信這些權限。

+1

哪個組件服務需要更改? –