Показать полную графическую версию : [решено] скрипт проверяет файл по дате после запускает другой скрипт
Я полный чайник в написании скриптов, не могли бы вы мне помочь написать скритп который проверяет файл в определеной папки допустим 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
Спасибо большое, у меня вот такая ошибка вылетает "сценарий 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
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
я экспериментировал убирал это символ _ , в одну строку делал даты папки менял и файла дату менял на 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
И не будет никакой разницы - есть слэш или нету слэша.
Спасибо большое при таком коде он запускается но если я меняю вместо = 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
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.