Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] скрипт проверяет файл по дате после запускает другой скрипт (http://forum.oszone.net/showthread.php?t=212297)

dot85 31-07-2011 03:02 1723075

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

SendMessage 31-07-2011 06:33 1723090

Код:

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 1723262

Спасибо большое, у меня вот такая ошибка вылетает "сценарий 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 1723467

dot85, чтобы не было таких ошибок, код на форуме специально оформляется тэгом «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 1723485

я экспериментировал убирал это символ _ , в одну строку делал даты папки менял и файла дату менял на 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 1723874

В строке
Код:

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 1723889

Спасибо большое при таком коде он запускается но если я меняю вместо = 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 1723907

Цитата:

Цитата dot85
если я меняю вместо = 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 1723912

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 1723925

Цитата:

Цитата dot85
= 0 »

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


Время: 04:46.

Время: 04:46.
© OSzone.net 2001-