【问题标题】:How to run two commands in different folders from an executable file?如何在可执行文件的不同文件夹中运行两个命令?
【发布时间】:2023-01-30 15:53:51
【问题描述】:

我正在尝试创建一个可执行文件,该文件在两个不同的文件夹中运行两个命令。

我正在开发一个带有快速 API 的 React 应用程序,它们位于两个不同的文件夹中。我试图创建一个在我的 API 文件夹中运行 npm run dev.bat 文件,然后打开一个新终端在我的应用程序文件夹中运行 npm start 但我无法让它工作。

重要的是打开两个终端以保持两个进程都打开。

我现在的代码是这样的

@echo off

rem Change directory and run command in current command prompt
cd "path\one\"
echo Running 'npm run dev' in current command prompt
start cmd /c "npm run dev"

rem Open new command prompt window and change directory and run command
start cmd /k "cd path\two && echo Running 'npm start' in new command prompt && npm start"

一旦运行,它只是说找不到指定的路线。

任何帮助,将不胜感激!

【问题讨论】:

  • 请打开command prompt,运行start /?并阅读输出帮助。有一个选项/D来定义可执行文件启动的当前工作目录,它通过函数参数lpCurrentDirectory传递给Windows内核库函数CreateProcess,用于启动%SystemRoot%\System32\cmd.exe或更短@的可执行文件987654331@。
  • 任务描述对我来说不是很清楚。发布的代码指示cmd.exe 处理批处理文件以启动第二个cmd.exe,并可选择运行命令行并关闭以使用两个参数rundev 运行批处理文件npm。是的,npm 不是可执行文件,它也是一个批处理文件,文件扩展名更好.cmd。第二个start 指示cmd.exe 启动第三个cmd.exe 以处理批处理文件npm 以参数start 执行。三个cmd.exe短时间同时运行。
  • 第二个和第三个启动 cmd.exe 运行时间很可能更长,因为 npm 启动一个可执行文件(node.exe 我没记错,尽管从未使用 Node.js 和 npm 安装包),它处理的脚本很可能需要更长的时间。有两个node.exe进程同时运行,第一个以run dev作为参数启动,第二个以start作为参数启动。第二个cmd.exe在第一个node.exe终止和npm.cmd run dev处理完成后自行终止。
  • 第三个cmd.exe在第二个node.exe终止并且npm.cmd start处理完成后继续运行。这使您可以使用该命令进程来执行更多命令行或仅查看输出到控制台。那真的是你想要的吗?是的,而不是用作批处理文件@start "npm run dev" /D"path\one" %ComSpec% /D /C npm.cmd run dev 中的第一行和第二行@start "npm start" /D"path\two" %ComSpec% /D /K npm.cmd start。就是这样。两个 cmd.exe 启动,每个都有自己的控制台窗口,其标题由 " 中的第一个字符串定义。
  • 首先非常感谢您抽出时间来回答!我试过你的代码,但它遗憾地告诉我"npm.cmd" is not recognized as an internal command我想做的是有一个可打开两个终端的可执行文件。在其中一个转到我的 API 文件夹并运行npm run dev,在另一个转到我的应用程序文件夹并运行npm start 我在 Windows 终端中运行它们时也遇到了问题,因为它无法将 npm 识别为命令。不用说,我完全不知道自己在做什么,因为我通常使用 Mac 工作,而我必须使用 Windows 来工作。

标签: reactjs express cmd terminal automation


【解决方案1】:

非常感谢 Mofi,我终于让它工作了!

这是我使用的代码:

@echo off

@start "npm install" /D"internal-simulatorinternal-simulator-api" %ComSpec% /D /K npm.cmd i && start "npm start" /D"internal-simulatorinternal-simulator-api" %ComSpec% /D /C npm.cmd start
@start "npm install" /D"internal-simulatorinternal-simulator-app" %ComSpec% /D /K npm.cmd i && start "npm start" /D"internal-simulatorinternal-simulator-app" %ComSpec% /D /K npm.cmd start

再次非常感谢!我现在必须弄清楚如何让它在这两个命令中运行npm i,并在npm i结束后运行其他命令。

【讨论】:

    猜你喜欢
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 2021-01-29
    • 2019-11-13
    • 1970-01-01
    • 2018-06-27
    相关资源
    最近更新 更多