运行 新终端中的命令,稍后终止

Run commands in new terminals, then kill later

我有一个 start.bat 类似于以下内容:

start npx tailwindcss -i ./www/src/styles/main.css -o ./www/dist/styles/main.css --watch
start caddy run

它会启动 2 个新的 cmd 提示并在其中启动进程(两者都 运行 无限期)。这个 bat 文件有没有办法向它生成的 cmd 发送 kill 命令?理想情况下,我有一个命令可以杀死所有创建的“子”进程。

一个 PowerShell 解决方案 - 这是可以接受的,因为这个问题的标记 隐含 明确说明 by icanfathom(OP)在评论中(“不,PS 会很好”)- 使用 Start-Process and Stop-Process cmdlets:

$processes = & {
  Start-Process -PassThru npx 'tailwindcss -i ./www/src/styles/main.css -o ./www/dist/styles/main.css --watch'
  Start-Process -PassThru caddy run
}

# ...

# Stop (kill) all launched processes.
$processes | Stop-Process
set "wintitle=my process %time%"
start "%wintitle%" npx tailwindcss -i ./www/src/styles/main.css -o ./www/dist/styles/main.css --watch
start "%wintitle%" caddy run

....

taskkill /FI "WINDOWTITLE eq %wintitle%"

[未经测试] - 理论上应该可行...

总是最好 start 加上 quoted-title 因为 start 命令看到的第一个引用的字符串可能会被吃掉并用作标题。