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

Windows系统下如何通过.sh文件并行运行2个及以上npm任务

问题根因

你写的.sh是类Unix系统的Bash/Bourne Shell脚本,Windows原生不支持该类脚本的直接执行,且脚本执行逻辑默认是同步阻塞的:当前台启动的命令未退出时,脚本会暂停在当前行,不会执行后续逻辑。你写的第一个npm run是常驻前台的进程,只要不手动终止,脚本永远不会走到切换目录、启动第二个npm任务的步骤。

可行解决方案

根据你实际使用的脚本运行环境选对应方案即可:

方案1:保留.sh脚本格式(适用于用Git Bash/WSL/Cygwin等兼容层跑脚本的场景)

只需要在第一个npm启动命令末尾加&,将该进程放到后台运行,即可不阻塞后续脚本执行。注意保留第二个npm进程在前台运行,避免脚本执行完直接退出导致进程残留,按Ctrl+C终止前台进程时可统一结束所有关联任务。
修正后的脚本代码:

cd UAA_Generators/JapaneseSyntax/ByNodeJS/DataStructures/Tokens || exit
npm run "Incremental building" &

cd ../ModulesCollection || exit
npm run "Incremental building"

代码说明:

  • 命令末尾的&是Bash内置语法,作用是将前置命令放入后台执行,脚本无需等待该命令退出即可继续往下走
  • 保留第二个npm任务在前台运行,终端不会直接退出,两个任务的日志都会输出在当前窗口,按Ctrl+C可终止前台任务,同时后台启动的第一个npm任务也会随脚本退出被自动回收

方案2:使用Windows原生PowerShell脚本(无需额外装兼容层,系统自带支持)

如果没有安装类Unix兼容层,直接写PowerShell脚本(后缀为.ps1)适配Windows环境更稳定,用Start-Process拉起第一个后台进程即可:

Set-Location "UAA_Generators/JapaneseSyntax/ByNodeJS/DataStructures/Tokens"
Start-Process npm -ArgumentList "run", "Incremental building"

Set-Location "../ModulesCollection"
npm run "Incremental building"

代码说明:

  • Start-Process会独立拉起第一个npm进程,不会阻塞当前脚本执行
  • 第二个npm任务在当前终端前台运行,按Ctrl+C可终止前台任务,第一个后台任务可在任务管理器或新开终端执行taskkill /im node.exe /f统一清理

方案3:使用Windows原生CMD批处理脚本(双击即可运行,适配所有Windows版本)

如果需要最轻量化的原生脚本,直接写后缀为.bat/.cmd的批处理脚本即可,用内置的start命令拉起后台进程:

@echo off
cd /d UAA_Generators\JapaneseSyntax\ByNodeJS\DataStructures\Tokens
start "" npm run "Incremental building"

cd /d ..\ModulesCollection
npm run "Incremental building"

代码说明:

  • start命令后紧跟的空引号是必填参数,用于占用控制台窗口标题位,避免命令解析失败
  • 第一个npm任务会被拉起在独立的控制台窗口运行,第二个任务保留在当前窗口,两个进程互不阻塞
补充说明
  • .sh后缀默认对应类Unix系统的Bash/Bourne Shell环境,和Windows原生的PowerShell、CMD指令语法不通用,在Windows上直接双击.sh文件会因为没有默认解释器无法运行
  • 不要把两个常驻npm任务都放到后台运行,否则脚本执行完会直接退出,容易出现后台进程残留、无法正常关闭的问题

内容的提问来源于stack exchange,提问作者Takeshi Tokugawa YD

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:51:24