Я не могу понять, что я делаю неправильно. У меня есть командный файл, начинающий скрипт vbs. Скрипт просто выполняет некоторые операции в некоторых файлах, например, перемещает их, создает, удаляет ... Все работает отлично. Выполнение биты начинается скрипт vbs и все работает. Файл bat просто делает cscript file.vbsvbs запланированный путь не найден
Проблема в том, что я запланировал этот файл bat. Когда придет время, оно выполняется, но я получаю ошибку «путь не найден» в скрипте vbs.
Это не проблема задачи расписания, потому что у меня есть 11 задач, выполняющих пакетные файлы, и они запускаются сглаженно, и скрипт выполняется (я поставил на него контроллеры). Но скрипт vbs всегда возвращает тот же путь, что и не найденная ошибка.
Опять же, если я запускаю скрипт вручную, он работает без проблем.
Задача назначается с той же учетной записью, которую я использую для ручной работы с файлом, поэтому это не проблема разрешения. Я просто дублирую пакет и запускаю его, нажимаю на выполнение в диспетчере расписания задач, и он терпит неудачу.
Система является стандартом Windows Server 2008 r2. я уже пытался перезагрузить, удалить и сделать новую задачу ....
Спасибо всем
[UPDATE]
Я здесь вставить часть кода
FILE: D: \ Scripts \ conf.ini
[script1]
fileA=D:\Rep\exportA.csv
fileB=D:\Rep\exportB.csv
fileC=D:\Rep\exportC.csv
dirHistory=D:\Rep\history
FILE: D: \ Scripts \ 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
FILE: D: \ Scripts \ merge.bat
echo Start Merge %date% %time% >> Started.log
cscript D:\scripts\merge.vbs
Извините, если я не ставил его раньше, но я думал, что это проблема с окнами, потому что я думал, что код в порядке.
Благодаря
Какова ценность 'fileA', когда вы получаете эту ошибку? Добавьте строку 'WScript.Echo fileA' перед строкой, которая вызывает ошибку, и проверьте, если: a) вы получаете абсолютный путь и b) путь существует. Если вы получите относительный путь, проверьте рабочий каталог ('WScript.Echo objFso.GetAbsolutePathName (". ")'), Если путь существует внутри него. –
Я уже пытался повторить значение переменной, и он показывает правильный абсолютный путь, и он существует. Я попытался отладить все, что мог, но все кажется прекрасным. Я даже попытался сделать еще одну партию, выполняющую файл merge.bat. И это работает. Но после этого он возвращает ошибку. Я думал переписать все на python, но не люблю оставлять нерешенные вещи, и есть 800 строк кода для конвертирования ... – Dario
Дважды проверьте это, вставив строку 'WScript.Echo objFso.FileExists (fileA): WScript.Echo objFso.FolderExists (objFso.GetParentFolderName (fileA)) '. Также дважды проверьте, что 'fileA' содержит фактическое имя файла (т. Е. Не имеет завершающего' '\' '). –