Нужен скрипт выключения: проверьте дату, если среда запускает пакетный скрипт - PullRequest
1 голос
/ 06 марта 2012

Мы используем avast adnm 4.8, и у него нет опции сканирования выключения. Я сделал пакетный скрипт для запуска Avast при завершении работы.

@echo off
shutwdown -a
pushd "C:\Program Files\Alwil Software\Avast4"

cls

echo --------------------------------------------------------------

echo Bezig met scannen, de computer wordt automatisch uitgezet...

echo --------------------------------------------------------------

aswcmd C: /m /*

popd "C:\Program Files\Alwil Software\Avast4"

shutdown -s

Но я хочу сканировать компьютеры только в среду. Так что, если не среда, компьютеры должны выключиться без сканирования.

Мне нужен VBscript, чтобы проверить текущую дату и вызвать пакетный сценарий, если это среда и если в другие дни продолжится отключение. Я хочу использовать этот скрипт в качестве скрипта выключения. Если это возможно с помощью пакетного сценария, это также хорошо.

Заранее спасибо,

Ответы [ 4 ]

2 голосов
/ 06 марта 2012

Это можно сделать с помощью этого пакетного сценария:

@ECHO OFF
FOR /F "TOKENS=1-3 DELIMS=/" %%A IN ("%DATE%") DO SET /A MM=10%%A %% 100, DD=10%%B %% 100, YY=%%C
IF %MM% LSS 3 SET /A MM+=12, YY-=1
SET /A A=YY/100, B=A/4, C=2-A+B, E=36525*YY/100, F=306*(MM+1)/10, DOW=(C+DD+E+F-3)%%7
IF NOT %DOW% == 3 GOTO SHUTDOWN
ECHO TODAY IS WEDNESDAY, SCAN HERE...
:SHUTDOWN
ECHO SHUTDOWN HERE...

Переменная DOW имеет значение от 0 (воскресенье) до 6 (суббота).Если формат даты не ММ / ДД / ГГГГ, измените порядок переменных ММ, ДД и ГГ в команде FOR / SET соответствующим образом.

1 голос
/ 16 мая 2012

Всегда лучше сравнивать с Weekday () и использовать WeekdayName () только для целей отображения.

К счастью, существует глобальное системное перечисление, которое уже отображает все числовые значения Weekday () на константы имени дня недели, которые можно прочитать на местном языке установки Windows. Я полагаю, ваша установка предлагает константу vbWoensdag. В противном случае у нас будут будущие программисты, для чего здесь 4?

Weekday() will return one of the following constant values:

vbSunday    1
vbMonday    2
vbTuesday   3
vbWednesday 4
vbThursday  5
vbFriday    6
vbSaturday  7

Правильный способ написания теста:

If Weekday(date) = vbWednesday Then ....

Также вы всегда можете использовать Сейчас вместо Даты. Разница теперь включает текущее время дня, когда Date всегда обнуляет эту часть значения datetime. Если численно рассматривать вариант даты и времени как двойной, целочисленная часть - это дата, а время - остаток. Итак, Дата в основном Int (сейчас), то есть полночь, когда начинается этот день. Вы также можете сказать Tomorrow = Date + 1, если вы обнаружите, что вызываете DateAdd () для простого чрезмерного увеличения.

1 голос
/ 06 марта 2012

Это должно сработать

If WeekdayName(Weekday(Date))="Wednesday" Then
 Dim shell
 Set shell=createobject("wscript.shell")
 shell.run "C:\Documents and Settings\Amol\Desktop\Temp\Shutdown.bat"
 set shell=Nothing
End If  
0 голосов
/ 07 марта 2012

Благодаря 4M01

1) Этот скрипт работает только на голландских Windows: (замените «woensdag» на свой собственный язык, например, среду, если вы используете английские окна. Он чувствителен к регистру)

If WeekdayName(Weekday(date)) = "woensdag" Then
 Dim shell
 Set shell=createobject("wscript.shell")
 shell.run """C:\Documents and Settings\test\Desktop\scan.bat"""
 set shell=Nothing
End If

2) Этот скрипт работает с многоязычной Windows. (Вы должны найти номер дня недели. В этом случае среда была номером 4)

If Weekday(date) = "4" Then
 Dim shell
 Set shell=createobject("wscript.shell")
 shell.run """C:\Documents and Settings\test\Desktop\scan.bat"""
 set shell=Nothing
End If
...