我有一个计划任务每天早上运行,需要一点时间才能运行(大约一个小时)。在执行脚本期间,我注意到它的进度条会随机停滞,直到我聚焦窗口并按下enter。当我这样做时,进度会从中断的地方继续,并继续工作,直到它完成或需要再次enter按下。
我自己编写了脚本,但不明白为什么它会停顿,所以我认为最好的做法是enter每隔 X 次模拟一次按压,以便在我不在身边亲自按下它时保持脚本继续运行。
我一直找不到可以解决我的问题的资源,我希望有人能给我一些建议如何实现这一点?我的 powershell 脚本基本上如下:
cd {{file path for running node script}}
yarn run start
答案1
一种方法是运行你的脚本,然后运行第二个脚本,该脚本通过聚焦窗口并向运行 yarn 命令的打开窗口发送回车键来执行按键操作。有点像这样。未经测试但概念上-
Script1.ps1(你的脚本)
$Host.UI.RawUI.WindowTitle = "YarnScript"
cd {{file path for running node script}}
yarn run start
脚本2.ps1 (聚焦正在运行的 powershell 窗口并每 5 分钟按一次回车键)
Start-Process "C:\temp01\script1.ps1"
$wshell = New-Object -ComObject wscript.shell;
while (1) {$wshell.AppActivate('YarnScript'); $wshell.SendKeys('~'); Start-Sleep -seconds 300}
第一个脚本(您的脚本)应该添加一行来设置窗口标题。我在这里选择了名称“YarnScript”。这将在第二个脚本中用于“聚焦”您的脚本正在运行的窗口并发送击键。
第二个脚本是您将添加到任务计划程序的脚本。此脚本调用您的 YarnScript 并运行它。一旦运行,它会无限聚焦 YarnScript 所在的窗口,并每 300 秒发送一次 Enter (~) 按键。
我不知道要将循环时间延长到多长,所以我只是将其设置为无限,您可以自定义按键持续发送的时间长度。