Powershell:脚本执行期间每 5 分钟自动按一次 Enter 键

Powershell:脚本执行期间每 5 分钟自动按一次 Enter 键

我有一个计划任务每​​天早上运行,需要一点时间才能运行(大约一个小时)。在执行脚本期间,我注意到它的进度条会随机停滞,直到我聚焦窗口并按下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 (~) 按键。

我不知道要将循环时间延长到多长,所以我只是将其设置为无限,您可以自定义按键持续发送的时间长度。

相关内容