Autohotkey If 语句只产生一个结果

Autohotkey If Statement makes only one result

我只想在工作日运行一个程序, 所以我写了一个 AutoHotKey 脚本来检查“今天是星期天还是假期”

但是我的脚本不起作用,我也不知道问题出在哪里。 这是代码。

Result = "WorkingDay"

if(A_Wday = 1) {
Result = "Sunday"
}

HolidayList = 0101|0211|0212|0213|0301|0409|0501|0505|0519|0606|0815|0920|0921|0922|1003|1009|1225
StringSplit,HoliDay,HoliDayList,|
StringLeft,Today,A_Now,8
StringRight,Today,Today,4

Loop %Holiday0%
    {
    CheckDay := HoliDay%A_index%
    ; msgbox, %Today% = %CheckDay%
    if ( %Today% == %CheckDay% ) {
    Result = "Holiday"
    break
    }
}

msgbox, %Today% = %Result%

问题是“Result”变量return只有“Holiday”

请帮帮我.........在此先感谢。

基本上你只是在使用一大堆遗留代码,并试图混合一些现代的非遗留代码,除非你非常了解如何去做,否则它们真的不会很好地混合。

最大的问题就在这里:
if ( %Today% == %CheckDay% )
通过尝试使用在非遗留 if ()(docs) 中引用变量的遗留方式,坏事发生了。你正在尝试使用动态变量,而你真的不希望那样,所以实际发生的是你检查是否 nothing == nothing,并且总是会 return true.
你实际上应该如何在现代表达式语句中引用变量,只是
if (Today = CheckDay)
(比较时,=== 用于不区分大小写和区分大小写的比较,你可能打算做 =

现在应该可以了。
这是现代 AHK 的完整代码:

Result := "WorkingDay"

if (A_Wday = 1) 
    Result := "Sunday"

HolidayList := "0101|0211|0212|0213|0301|0409|0501|0505|0519|0606|0815|0920|0921|0922|1003|1009|1225"
Holidays := StrSplit(HolidayList, "|")
Today := SubStr(A_Now, 5, 4)

for each, Holiday in Holidays
{
    if (Today = Holiday)
    {
        Result := "Holiday"
        break
    }
}

MsgBox, % Today " = " Result

我现在没有时间解释更多,但要了解传统 AHK 与现代 AHK,我推荐此文档页面和我之前的回答:
https://www.autohotkey.com/docs/Language.htm