我無法弄清楚我做錯了什麼。 我有一個批處理文件啓動一個VBS腳本。 該腳本只是在一些文件中進行一些操作,如移動它們,創建,刪除... 它工作正常。 執行bat啓動vbs腳本,一切正常。 BAT文件只是使一個CSCRIPT file.vbsvbs調度路徑未找到
的問題是,我已經安排這個bat文件。 當時間到了,它會被執行,但在vbs腳本中出現「路徑未找到」的錯誤。
這不是一個計劃任務的問題,因爲我已經11個任務運行的批處理文件和他們smootly運行,並執行腳本(我把控制器就可以了)。 但是,vbs腳本始終返回相同的路徑找不到錯誤。
同樣,如果我手動執行該腳本,它運行沒有問題。
任務計劃與我使用手動執行該文件相同的帳戶,所以它不是一個權限問題。我只需雙擊批處理並運行它,單擊任務計劃管理器上的執行就會失敗。
系統爲Windows Server 2008 R2的標準。 我已經嘗試過重新啓動,刪除及創建一個新的任務....
感謝大家
[更新]
我貼在這裏的部分代碼
文件:d: \腳本\ conf.ini
[script1]
fileA=D:\Rep\exportA.csv
fileB=D:\Rep\exportB.csv
fileC=D:\Rep\exportC.csv
dirHistory=D:\Rep\history
文件:d:\腳本\ merge.vbs
Dim iniObj
Set iniObj=New ClsINI
If iniObj.OpenINIFile("D:\scripts\conf.ini") = False Then
wLog("Impossible to read file ini")
Set iniObj = Nothing
Chiudi()
End If
Dim errIni,tmpVal
Dim fileA,fileB,fileC,dirHistory
errIni = iniObj.GetINIValue("script1", "fileA", fileA)
tmpVal = iniObj.GetINIValue("script1", "fileB", fileB)
errIni = errIni+tmpVal
tmpVal = iniObj.GetINIValue("script1", "fileC", fileC)
errIni = errIni+tmpVal
tmpVal = iniObj.GetINIValue("script1", "dirHistory", dirHistory)
errIni = errIni+tmpVal
If errIni > 0 Then
wLog("Error loading file ini")
wLog(errIni)
iniObj.CloseINIFile()
Set iniObj = Nothing
Chiudi()
End If
wLog("File ini Caricato")
Dim objFso,posizioneFile,Fase
Dim arrElement,resArray,actionArray,cedoleArray,varArray ,i
Dim conn,rs,strCon
Dim maxPos,maxTemp
Dim objExcel, objSheet,cella
Set objFso = CreateObject("Scripting.FileSystemObject")
if objFso.FileExists(fileA) then
objFso.DeleteFile(posizione)
wLog("File posizione moved")
else
wLog("File posizione not found")
end if
在這條線上得到的 「路徑找不到」 錯誤
Set posizioneFile = objFso.OpenTextFile(fileA, 8, True)
If not objFso.FileExists(fileB) then
SendEmail("nego")
Fase=false
Else
Set tFile = objFso.OpenTextFile(fileB, 1)
strFile=tFile.ReadAll
tFile.Close
posizioneFile.WriteLine strFile
objFso.MoveFile fileB, dirHistory&"\Negoz_"& CreaId(2) & ".csv"
End If
posizioneFile.Close
文件:d:\腳本\ merge.bat
echo Start Merge %date% %time% >> Started.log
cscript D:\scripts\merge.vbs
很抱歉,如果我沒有把它之前,但我認爲這是一個Windows問題,因爲我認爲代碼很好。
感謝
當你遇到錯誤時'fileA'的值是多少?在引發錯誤的行之前添加一行'WScript.Echo fileA',並檢查a)是否獲得絕對路徑和b)路徑是否存在。如果你得到一個相對路徑,檢查工作目錄('WScript.Echo objFso.GetAbsolutePathName(「。」)')如果路徑存在於其中。 – 2013-03-06 22:57:29
我已經嘗試回顯變量值,並顯示正確的絕對路徑,它存在。我試着調試所有我能做的,但一切似乎都很好。我甚至試過讓另一批執行merge.bat。它的工作原理。但一旦計劃它返回錯誤。我想在Python中重寫所有內容,但不喜歡留下未解決的事情,並且有800行代碼要轉換... – Dario 2013-03-07 08:47:08
通過插入一行'WScript.Echo objFso.FileExists(fileA)來仔細檢查: WScript.Echo objFso.FolderExists(objFso.GetParentFolderName(fileA))'。再仔細檢查一下'fileA'是否包含一個實際的文件名(即沒有尾部''''')。 – 2013-03-07 12:12:06