You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何像运行批处理一样运行JavaScript 用Windows计划任务定时执行

问题核心原因

你原来的脚本执行中断,是因为window.location.href赋值会触发浏览器整页跳转,当前页面的JS执行上下文会被直接销毁,后续代码根本没有执行机会,这是浏览器的标准运行机制,和await写法无关。
要实现Windows下定时自动运行这类页面操作脚本,最稳定的方案是用Node.js + Puppeteer无头浏览器做自动化,直接对接系统任务计划程序即可,不需要手动打开浏览器操作。

具体实现步骤

1. 环境准备

先安装Node.js,安装时务必勾选「Add to PATH」选项,安装完成后新建一个专门放脚本的文件夹,在文件夹地址栏输入cmd调出命令行,依次执行以下命令安装依赖:

npm init -y
npm i puppeteer

Puppeteer安装时会自动带一个兼容版的Chromium浏览器,不需要额外手动装浏览器。

2. 改写自动化脚本

在脚本文件夹里新建autoTask.js,把你的业务逻辑改成Puppeteer可执行的形式,彻底避免跳转丢上下文的问题,参考代码如下:

const puppeteer = require('puppeteer');
// 延时工具函数
const timer = ms => new Promise(resolve => setTimeout(resolve, ms));

async function runScheduledTask() {
  // 启动浏览器,headless设为true是后台无窗口运行,调试阶段可以改成false弹出浏览器看操作过程
  const browser = await puppeteer.launch({
    headless: 'new',
    defaultViewport: null,
    // 固定用户数据目录,保存登录状态不用每次重登
    userDataDir: './browserData'
  });
  const page = await browser.newPage();

  try {
    // 跳转到目标页面,等DOM加载完成再往下走
    await page.goto('替换成你实际要访问的目标URL', { waitUntil: 'domcontentloaded' });
    await timer(3000);

    // 自动处理所有弹窗,不会因为alert/confirm卡住脚本
    page.on('dialog', async dialog => {
      await dialog.accept();
    });

    // 匹配你要操作的列表元素,选择器和你原来写的完全一致
    const listItems = await page.$$('.List > div.board-list > div.list > table > tbody > tr');
    for (const item of listItems) {
      // 打印当前处理项的文本内容方便排查
      console.log('当前处理项:', await item.evaluate(el => el.innerText.trim()));
      // 查找对应按钮并点击
      const actionBtn = await item.$('td.list-btn > a.btn.btn-primary');
      if (actionBtn) {
        await actionBtn.click();
        await timer(3000);
      }
    }
  } catch (error) {
    console.error('任务执行出错:', error);
  } finally {
    // 执行完成后自动关闭浏览器释放资源
    await browser.close();
  }
}

runScheduledTask();

3. 本地调试脚本

在命令行执行node autoTask.js,第一次运行建议先把headless: 'new'改成headless: false,弹出浏览器窗口后如果页面需要登录就手动登录一次,登录信息会存在之前配置的browserData文件夹里,后续后台运行不需要重复登录。确认所有点击、等待逻辑都符合预期后,再改回无头模式。

4. 注册到Windows任务计划实现定时运行

  1. 打开系统自带的「任务计划程序」,点击右侧菜单栏「创建基本任务」,填写任务名称,触发器选择「每天」,设置执行时间为午夜0点。
  2. 操作类型选择「启动程序」:
    • 「程序或脚本」栏填写node.exe的完整路径,不知道路径可以在cmd执行where node查询,默认路径一般是C:\Program Files\nodejs\node.exe
    • 「添加参数」栏填写autoTask.js的完整绝对路径,比如D:\autoScript\autoTask.js
    • 「起始于」栏填写脚本所在的文件夹路径,比如D:\autoScript
  3. 任务创建完成后打开任务属性,勾选「不管用户是否登录都要运行」「使用最高权限运行」,保存后配置就生效了,到点会自动在后台跑脚本。
注意事项
  • 不要尝试用本地HTML嵌JS、浏览器书签脚本、控制台直接跑脚本的方式做这类定时任务,页面跳转、刷新、标签页关闭都会直接销毁JS执行上下文,稳定性完全无法保证。
  • 脚本里的等待时长可以根据目标页面的实际加载速度调整,如果页面加载慢可以适当把3000毫秒的等待时间改长,避免元素还没渲染出来就触发点击报错。
  • 如果要记录每次运行的日志,可以在任务计划里配置把控制台输出重定向到日志文件,方便后续排查执行问题。

内容的提问来源于stack exchange,提问作者rickbcol_sanalgos.club

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 10:09:15