Windows 需要关闭脚本:如果周三运行批处理脚本,请检查日期

Windows 需要关闭脚本:如果周三运行批处理脚本,请检查日期,windows,vbscript,batch-file,shutdown,Windows,Vbscript,Batch File,Shutdown,我们使用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 autom

我们使用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来检查取消当前日期,如果是星期三,则调用batchscript,并在其他日子继续关机。我想将此脚本用作关机脚本。如果可以使用批处理脚本,也可以


提前感谢,

这应该可以解决问题

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  

这应该能奏效

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  

您可以使用此批处理脚本执行此操作:

@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...

道指变量的值介于0星期日和6星期六之间。如果日期格式不是MM/DD/YYYY,请相应地更改FOR/SET命令中的MM、DD和YY变量顺序。

您可以使用此批处理脚本:

@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...
道指变量的值介于0星期日和6星期六之间。如果日期格式不是MM/DD/YYYY,请相应地更改FOR/SET命令中的MM、DD和YY变量顺序。

多亏了

1此脚本仅适用于荷兰语窗口:将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此脚本适用于多语言窗口。你必须找到一周的天数。在这种情况下,星期三是第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
多亏了

1此脚本仅适用于荷兰语窗口:将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此脚本适用于多语言窗口。你必须找到一周的天数。在这种情况下,星期三是第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

与工作日相比,只使用工作日名称进行显示总是更好的

幸运的是,有一个全局系统枚举,它已经将所有工作日的数值映射到以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 ....

此外,您还可以始终使用“现在”代替“日期”。差异现在包括日期始终为零的日期时间值的当前时间。如果将日期时间变量视为双精度变量,则整数部分为日期,时间部分为余数。所以日期基本上是现在,也就是午夜,这一天开始的时候。如果您发现调用DateAdd进行简单的增量过多,也可以说明天=日期+1。

最好与工作日进行比较,只使用工作日名称进行显示

幸运的是,有一个全局系统枚举,它已经将所有工作日的数值映射到以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 ....

此外,您还可以始终使用“现在”代替“日期”。差异现在包括日期始终为零的日期时间值的当前时间。如果将日期时间变量视为双精度变量,则整数部分为日期,时间部分为余数。所以日期基本上是现在,也就是午夜,这一天开始的时候。如果您发现调用DateAdd进行简单的增量过多,也可以说明天=日期+1。

Hi 4M01,它不起作用。我试过荷兰语和英语的窗户,但运气不好。对于达奇,我把它改成了wo和woensdag。你有什么错误吗?你改变了什么?您只需要更改bat文件的路径,而不是C:\Documents and Settings\Amol\Desktop\Temp\Shutdown.batI我只更改了我的批处理脚本的路径,仅此而已。我没有发现任何错误。它不运行批处理脚本。我曾经使用过这样的方法:如果WeekdayName WeekdayDate=周三,那么Dim shell Set shell=createobjectwscript.shell.run C:\Documents and Settings\test\Desktop\Temp\AvastShutdowScan.bat Set shell=Nothing End IfC:\Documents and Settings\test\Desktop\Temp\AvastShutdowScan.bat试着用这个代替C:\Documents and Settings设置\test\Desktop\Temp\aVastShutdownScan.batOk我让它工作了。周三改成了woensdag dutch,效果不错。但我们也有英文窗口,所以我改变了你的脚本。我会把它贴在下面作为答案。非常感谢你的帮助,伙计。你是英雄!嗨,4M01,它不工作。我试过荷兰语和英语的窗户,但运气不好。对于达奇,我把它改成了wo和woensdag。你有什么错误吗?你改变了什么?您只需要更改bat文件的路径,而不是C:\Documents and Settings\Amol\Desktop\Temp\Shutdown.batI我只更改了我的批处理脚本的路径,仅此而已。我没有发现任何错误。它不运行批处理脚本。我已经使用过:如果WeekdayNameWeekdayDate=Wednesda
y然后Dim shell Set shell=createobjectwscript.shell shell.run C:\Documents and Settings\test\Desktop\Temp\AvastShutdowScan.bat Set shell=Nothing End IfC:\Documents and Settings\test\Desktop\Temp\AvastShutdowScan.bat试试这个,而不是C:\Documents and Settings\test\Desktop\Temp\AvastShutdowScan.bat我已经开始工作了。周三改成了woensdag dutch,效果不错。但我们也有英文窗口,所以我改变了你的脚本。我会把它贴在下面作为答案。非常感谢你的帮助,伙计。你是英雄@E2:对不起?它在我的机器里工作得很好!请在SET/A命令之前插入ECHO MM=%MM%,DD=%DD%,YY=%YY%,并报告结果。是/char。你的日期分隔符?只需键入ECHO%DATE%。如果没有,请在DELIMS=/@e2e2:Opps中更改它!在%MM%LSS 3之前插入回显MM=%MM%,DD=%DD%,YY=%YY%。。。并报告结果,请…:@E2:对不起?它在我的机器里工作得很好!请在SET/A命令之前插入ECHO MM=%MM%,DD=%DD%,YY=%YY%,并报告结果。是/char。你的日期分隔符?只需键入ECHO%DATE%。如果没有,请在DELIMS=/@e2e2:Opps中更改它!在%MM%LSS 3之前插入回显MM=%MM%,DD=%DD%,YY=%YY%。。。并报告结果,请…: