如何解决Autohotkey If 语句只产生一个结果
我只想在工作日运行一个程序, 所以我写了一个 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,4
Loop %Holiday0%
{
CheckDay := HoliDay%A_index%
; msgBox,%Today% = %CheckDay%
if ( %Today% == %CheckDay% ) {
Result = "Holiday"
break
}
}
msgBox,%Today% = %result%
问题是“Result”变量只返回“Holiday”
请帮帮我......... 提前致谢。
解决方法
基本上,您只是在使用一大堆遗留代码,并试图混合一些现代的非遗留代码,除非您非常了解如何去做,否则它们真的不能很好地混合。
最大的问题就在这里:if ( %Today% == %CheckDay% )
通过尝试使用在非遗留 if ()
(docs) 中引用变量的遗留方式,会发生不好的事情。您正在尝试使用动态变量,而您真的不想要那样,所以实际发生的是您检查是否 nothing == nothing
,并且它总是会返回 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,我推荐此文档页面和我之前的回答:
https://www.autohotkey.com/docs/Language.htm
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。