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
我只想在工作日运行一个程序, 所以我写了一个 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