 |
|
Не удаётся передать параметр в Shell.Application (VBS)
Моё почтение участникам форума. Мне требуется ваша помощь в объяснении моей ошибки и того, как её устранить.
Часть моего скрипта:
читать дальше »
' Получаем доступ к ФС
set fso = CreateObject("Scripting.FileSystemObject")
' Эта штука нужна для работы с датой модификации файла
Set osa = CreateObject("Shell.Application")
' Каталог баз
set intFl = fso.GetFolder("d:\\test\\")
' Получим вчерашнюю дату и преобразуем её в нужный нам вид, чтобы получить
' независимый от настроек результат сравнения
ytday = now()-1
ytday = year(ytday) & "-" & month(ytday) & "-" & day(ytday)
set spFl = intFl.SubFolders ' Получаем список каталогов баз
For Each bs in spFl
' Получим доступ к каталогу из объекта Shell
set objFl = osa.NameSpace(bs)
' Найдём файл базы данных
bdFi = objFl.ParseName("1Cv8.1CD")
' Получим дату изменения файла базы данных в нужном виде для сравнения
dlmFl = year(bdFi.ModifyDate) & "-" & month(bdFi.ModifyDate) & "-" & day(bdFi.ModifyDate)
' Если дата изменения файла базы данных равна вчерашнему числу, то
' эту базу данных будем обрабатывать
If dlmFl=ytday Then
...........
End If
' А теперь надо вернуть дату модификации файла базы данных в исходное состояние
bdFi.ModifyDate = ytday
Next
На помеченную строку ругается интерпретатор: "Объектная переменная не задана". Я думаю, что он не воспринимает передачу переменной bs.
|
Используйте тэг [code].
Цитата:
Код:
Set intFl = fso.GetFolder("d:\\test\\")
|
Это не JScript. Удваивать слэши ни к чему. Завершать им путь также ни к чему.
Для получения разницы используется функция «DateAdd()».
Цитата:
Цитата putinka
На помеченную строку ругается интерпретатор: "Объектная переменная не задана". »
|
Где помеченная строка?
|
Цитата:
Цитата Iska
Используйте тэг [code]. »
|
Код:
' Получаем доступ к ФС
set fso = CreateObject("Scripting.FileSystemObject")
' Эта штука нужна для работы с датой модификации файла
Set osa = CreateObject("Shell.Application")
' Каталог баз
set intFl = fso.GetFolder("d:\\test\\")
' Получим вчерашнюю дату и преобразуем её в нужный нам вид, чтобы получить
' независимый от настроек результат сравнения
ytday = now()-1
ytday = year(ytday) & "-" & month(ytday) & "-" & day(ytday)
set spFl = intFl.SubFolders ' Получаем список каталогов баз
For Each bs in spFl
' Получим доступ к каталогу из объекта Shell
set objFl = osa.NameSpace(bs)
' Найдём файл базы данных
bdFi = objFl.ParseName("1Cv8.1CD")
' Получим дату изменения файла базы данных в нужном виде для сравнения
dlmFl = year(bdFi.ModifyDate) & "-" & month(bdFi.ModifyDate) & "-" & day(bdFi.ModifyDate)
' Если дата изменения файла базы данных равна вчерашнему числу, то
' эту базу данных будем обрабатывать
If dlmFl=ytday Then
...........
End If
' А теперь надо вернуть дату модификации файла базы данных в исходное состояние
bdFi.ModifyDate = ytday
Next
Подозреваю, что в NameSpace() надо передавать текстовое значение, отсюда и куролесит мой скрипт.
|
Пробуйте:
читать дальше »
Код:
Option Explicit
Dim strRootFolder
Dim strFileName
Dim dtPrevDate
Dim objFolder
Dim strFilePath
Dim objFolder2
Dim objFolderItem
strRootFolder = "d:\test"
strFileName = "1Cv8.1CD"
With WScript.CreateObject("Scripting.FileSystemObject")
If .FolderExists(strRootFolder) Then
dtPrevDate = DateAdd("d", -1, Now())
For Each objFolder In .GetFolder(strRootFolder).SubFolders
strFilePath = .BuildPath(objFolder.Path, strFileName)
If .FileExists(strFilePath) Then
If DateDiff("d", .GetFile(strFilePath).DateLastModified, dtPrevDate) = 0 Then
' Здесь Ваша обработка
MsgBox "Здесь Ваша обработка"
End If
With WScript.CreateObject("Shell.Application")
Set objFolder2 = .NameSpace(objFolder.Path)
If Not objFolder2 Is Nothing Then
Set objFolderItem = objFolder2.ParseName(strFileName)
If Not objFolderItem Is Nothing Then
objFolderItem.ModifyDate = dtPrevDate
Else
WScript.Echo "Can't determine file [" & strFileName & "] folder [" & objFolder.Path & "]."
End If
Else
WScript.Echo "Can't determine folder [" & objFolder.Path & "]."
End If
End With
End If
Next
Else
WScript.Echo "Can't find folder [" & strRootFolder & "]."
End If
End With
WScript.Quit 0
|
Время: 16:31.
© OSzone.net 2001-