我无法弄清楚我做错了什么。 我有一个批处理文件启动一个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