运行 新终端中的命令,稍后终止
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
命令看到的第一个引用的字符串可能会被吃掉并用作标题。
我有一个 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
命令看到的第一个引用的字符串可能会被吃掉并用作标题。