PDA

Показать полную графическую версию : [решено] скрипт проверяет файл по дате после запускает другой скрипт


dot85
31-07-2011, 03:02
Я полный чайник в написании скриптов, не могли бы вы мне помочь написать скритп который проверяет файл в определеной папки допустим C:/doci/test и если он 10 дневной давности то запускает другой скрипт для обновления допустим с названием "internet" (скрипт на обновление у меня уже есть)

SendMessage
31-07-2011, 06:33
Option Explicit

Dim strFolder
Dim strFile
Dim strScript
Dim objFSO

strFolder = "C:\doci\test\"
strFile = "file.ext"
strScript = "x:\internet.vbs"

Set objFSO = CreateObject("Scripting.FileSystemObject")

If DateDiff("d", objFSO.GetFile(strFolder & strFile).DateCreated, Date) > 9 Then _
CreateObject("WScript.Shell").Run strScript

dot85
31-07-2011, 14:21
Спасибо большое, у меня вот такая ошибка вылетает "сценарий E:\banronv\start.vbs строка 14 символ 84 недопустимый знак код 800A0408 источник ошибка компиляции Microsoft VBScript"
при таком скрипте неподскажите где закралась ошибка

Option Explicit

Dim strFolder
Dim strFile
Dim strScript
Dim objFSO

strFolder = "E:\banronv\demonsr"
strFile = "LAST_REC.TXT"
strScript = "E:\banronv\interne.vbs"

Set objFSO = CreateObject("Scripting.FileSystemObject")

If DateDiff("d", objFSO.GetFile(strFolder & strFile).DateCreated, Date) > 9 Then _ CreateObject("WScript.Shell").Run strScript

Iska
31-07-2011, 19:46
dot85, чтобы не было таких ошибок, код на форуме специально оформляется тэгом «code» (http://forum.oszone.net/misc.php?do=bbcode#code). И не надо было ничего в нём менять, нужно было копировать всё «как есть»:
If DateDiff("d", objFSO.GetFile(strFolder & strFile).DateCreated, Date) > 9 Then _
CreateObject("WScript.Shell").Run strScript
ибо это не одна, а две строки кода.
Либо, если решили сделать из этого одну строку, то убирайте символ продолжения строки кода «_»:
If DateDiff("d", objFSO.GetFile(strFolder & strFile).DateCreated, Date) > 9 Then CreateObject("WScript.Shell").Run strScript

dot85
31-07-2011, 20:07
я экспериментировал убирал это символ _ , в одну строку делал даты папки менял и файла дату менял на 10 и более дней скрипт почему то условия не выполняет т.е запуск второго скрипта
может это из за того что второй скрипт это запуск батника в скрытом режиме вот его код

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd.exe /c internet.exe", 0, false

может его как то объеденить с первым скриптом

internet.exe это батник который я конвертировал с помощью этой программы Advanced BAT to EXE Converter v2.45

SendMessage
01-08-2011, 13:07
В строке strFolder = "E:\banronv\demonsr" нужно ставить слэш после маршрута папки:strFolder = "E:\banronv\demonsr\"
Иначе файл LAST_REC.TXT не будет найден.



Сам виноват, надо было просто использовать однозначные решения, вместо:
If DateDiff("d", objFSO.GetFile(strFolder & strFile).DateCreated, Date) = 0 Then _
CreateObject("WScript.Shell").Run strScript
достаточно просто написатьIf DateDiff("d", objFSO.GetFile(objFSO.BuildPath(strFolder, strFile)).DateCreated, Date) = 0 Then _
CreateObject("WScript.Shell").Run strScript
И не будет никакой разницы - есть слэш или нету слэша.

dot85
01-08-2011, 13:29
Спасибо большое при таком коде он запускается но если я меняю вместо = 0 пишу > 9 то уже не запускается хотя файл от 25 мая а вот при < 9 тоже запускается

If DateDiff("d", objFSO.GetFile(objFSO.BuildPath(strFolder, strFile)).DateCreated, Date) = 0 Then _
CreateObject("WScript.Shell").Run strScript

SendMessage
01-08-2011, 13:51
если я меняю вместо = 0 пишу > 9 то уже не запускается хотя файл от 25 мая »
Сомневаюсь. Может быть дата последней модификации файла от 25 мая? Если Вы его скопировали - дата создания меняется на текущую в момент этого действия. Чтобы файл проверялся на дату последнего изменения, нужно заменитьIf DateDiff("d", objFSO.GetFile(objFSO.BuildPath(strFolder, strFile)).DateCreated, Date) = 0 Then _
CreateObject("WScript.Shell").Run strScriptнаIf DateDiff("d", objFSO.GetFile(objFSO.BuildPath(strFolder, strFile)).DateLastModified, Date) = 0 Then _
CreateObject("WScript.Shell").Run strScript

dot85
01-08-2011, 13:59
C этим кодом все заработало. Спасибо большое. сейчас еще чучуть поэкперементирую и закрою тему

If DateDiff("d", objFSO.GetFile(objFSO.BuildPath(strFolder, strFile)).DateLastModified, Date) = 0 Then _
CreateObject("WScript.Shell").Run strScript

SendMessage
01-08-2011, 14:22
= 0 »
Нужно не =0, а >9 - Вам ведь надо проверять на 10-дневную давность. Это я просмотрел в своем последнем посте - скопипастил с Вашего не глядя. :)




© OSzone.net 2001-2012