周六和周日测试条件的批处理文件

Batch file if condition for testing Saturday and Sunday

我有这个代码:

@echo off
for /f %%i in ('powershell ^(get-date^).DayOfWeek') do set dow=%%i
echo %dow%
if NOT %dow% == "Saturday" if NOT %dow% == "Sunday" 
(
    start "" "D:\Program Files (2012)\Openfire\bin\openfire.exe"
)

基本上我想如果是星期六或星期日则不应启动该程序,但对于所有其他日子它应该启动该程序。今天是星期六,但节目开始了。在 %dow% 中,我正确地得到了星期六,但它仍然执行启动命令。我错过了什么?

我看不出为此使用 的目的:

@%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile ^
 "If ((Get-Date).DayOfWeek -NotMatch \"Sunday^|Saturday\") { Exit 2 }"
@If ErrorLevel 2 Start "" "%ProgramFiles(x86)%\Openfire\bin\openfire.exe"

或者反其道而行之:

@%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile ^
 "If ((Get-Date).DayOfWeek -Match \"Sunday^|Saturday\") { Exit 2 }"
@If ErrorLevel 2 Exit /B
@Start "" "%ProgramFiles(x86)%\Openfire\bin\openfire.exe"

请注意,我假设您提交的代码不必要地更改了 openfire 可执行文件的位置,因此已将 D:\Program Files (2012) 替换为最可能位置的内置变量,位于 C:\Program Files (x86)

请注意 SundaySaturday 是本地化字符串。