Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Не удаётся передать параметр в Shell.Application (VBS)

Ответить
Настройки темы
VBS/WSH/JS - [решено] Не удаётся передать параметр в Shell.Application (VBS)

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Моё почтение участникам форума. Мне требуется ваша помощь в объяснении моей ошибки и того, как её устранить.
Часть моего скрипта:
читать дальше »
' Получаем доступ к ФС
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.

Отправлено: 17:37, 02-01-2014

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата putinka:
Часть моего скрипта: »
Используйте тэг [code].

Цитата:
Код: Выделить весь код
Set intFl = fso.GetFolder("d:\\test\\")
Это не JScript. Удваивать слэши ни к чему. Завершать им путь также ни к чему.

Цитата:
Код: Выделить весь код
ytday = now()-1
Для получения разницы используется функция «DateAdd()».

Цитата putinka:
На помеченную строку ругается интерпретатор: "Объектная переменная не задана". »
Где помеченная строка?

Отправлено: 18:54, 02-01-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата 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() надо передавать текстовое значение, отсюда и куролесит мой скрипт.

Отправлено: 19:42, 02-01-2014 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Пробуйте:
читать дальше »
Код: Выделить весь код
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
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:18, 02-01-2014 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Не удаётся передать параметр в Shell.Application (VBS)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - Не удается передать пакеты на сервер, не могу понять логики изменения пакетов. MrGep Сетевые технологии 4 26-03-2013 22:17
Разное - [решено] Не запускается диспетчер задач. Параметр задан не верно. KvadraNT Microsoft Windows 7 12 13-09-2012 05:42
Любой язык - [решено] Передать данные из bat-файла в vbs-скрипт Hector Скриптовые языки администрирования Windows 2 21-06-2011 15:43
VBS/WSH/JS - передать аргумент в скрипт vbs в планировщике win 2003 ? Virtul Скриптовые языки администрирования Windows 4 31-01-2011 10:38
VBS/WSH/JS - Помогите редактировать Autorun_Disable.vbs на Autorun_Enable.vbs nod201 Скриптовые языки администрирования Windows 0 05-12-2009 05:44




 
Переход