使用 Windows 任务计划程序打开 cmd 文件时执行但不启动服务器
Posted
技术标签:
【中文标题】使用 Windows 任务计划程序打开 cmd 文件时执行但不启动服务器【英文标题】:cmd file executes but does not start server when opened with Windows Task Scheduler 【发布时间】:2021-06-30 11:18:20 【问题描述】:基本上我想要的是在启动 Windows 时永远启动一个 express.js 服务器。我创建了一个带有命令的 .cmd 文件(见下文)。当我双击此文件时,服务器启动并像魅力一样工作。但是,当我在 Windows 10 任务计划程序中使用“登录用户”触发器创建任务时,cmd 窗口会打开,执行某些操作(无法这么快看到控制台)并关闭。没有服务器启动。
这是 .cmd 文件中的代码
cd\
cd Users\Jan
timeout /T 5
forever start forever.json
用户是管理员
在 cmd 文件中尝试了一个计时器
尝试将触发器延迟 5 分钟。在任务计划程序中
有没有人知道为什么这适用于双击文件而不是当任务计划程序打开时? 有没有更好的方法来永久启动这个服务器?
【问题讨论】:
您如何配置批处理文件以运行?您需要将其配置为使用参数/c c:\Mypath\to\batchfile.cmd
运行cmd.exe
,然后使用具有相同启动路径c:\Mypath\
的start in 选项。我也不会对配置文件进行所有的 cd。而是直接在脚本forever start C:\users\jan\forever.json
中启动它。如果jan
是您的用户,那么更好的是forever start "%userprofile%\forever.json"
感谢格哈德和莫菲。我一直在阅读这些页面,但由于我的知识有限,我仍然没有让它发挥作用。我的 cmd 文件现在看起来像这样:cd /D "%USERPROFILE%\AppData\Roaming\npm" "%USERPROFILE%\AppData\Roaming\npm\forever.cmd" start forever.json
。在任务计划程序脚本"%windir%\system32\cmd.exe"
中带有参数/c %USERPROFILE%\AppData\Roaming\npm\ForeverStart.cmd
。 (我已将 cmd 文件移动到另一个目录)。再次双击它可以工作,但不是在 Taks Scheduler 要求时。
【参考方案1】:
发现问题在于de命令行中需要使用完整路径。我检查了 .json 文件并将相对路径也更改为完整路径,现在它可以工作了。
但是,当我使用命令 forever list
forever 时,不会显示任何永久进程正在运行。尽管如此,我的服务器正在运行。谢谢大家!
【讨论】:
以上是关于使用 Windows 任务计划程序打开 cmd 文件时执行但不启动服务器的主要内容,如果未能解决你的问题,请参考以下文章
请问如何解决的?“windows2008 X64下,建立CMD程序的开机运行计划任务不能正常执行. 但直接双击执行”
使用任务计划程序唤醒后,Windows 10 电脑在两分钟内重新进入睡眠状态