powershell - powershell 从 cmd 运行以启动程序并退出。程序将继续运行,但 powershell 应该退出
问题描述
我试图在 Ninja 构建过程结束时在 JlinkGDBServer(它是带有 GUI 的 Windows 应用程序)上运行窗口版本。
powershell 是从cmd
cmd.exe /C "powershell & "C:/Program Files (x86)/SEGGER/JLink/JLinkGDBServer.exe" -port 2331 -s -CPU Cortex-M -device STM32L476RG -endian little -speed 4000 -vd &"
但 powershell 没有退出(应该保留 jlinkGDBserver 窗口)
编辑:它是从 Cmake 生成的 Ninja 脚本运行的。我在这里只有部分控制权。
解决方案:
powershell -command Start-Process -FilePath "'C:/Program Files (x86)/SEGGER/JLink/JLinkGDBServer.exe'" -ArgumentList '-port 2331', '-s', '-CPU Cortex-M', '-device stm32l476RG', '-endian little', '-speed 4000', '-vd'
解决方案
如果你可以调用cmd.exe
or powershell.exe
,你应该也可以直接调用程序。我不知道你为什么要调用cmd.exe
调用powershell.exe
来调用JLinkGDBServer.exe
。
除非 ninja 有一些细微差别,否则我不明白这应该是运行命令所需的全部内容:
"C:/Program Files (x86)/SEGGER/JLink/JLinkGDBServer.exe" -port 2331 -s -CPU Cortex-M -device STM32L476RG -endian little -speed 4000 -vd
作为记录,您的 PowerShell 进程可能由于以下两个原因之一而未退出:
你没有使用 call it with
powershell.exe -command
。cmd.exe /c
这与运行命令并退出的类似。省略此参数将运行您告诉它的任何内容,然后返回交互模式(除非您作为非交互用户执行它)。也有可能会
JLinkGDBServer.exe
阻止执行,一旦进程启动,甚至没有回退到交互模式。在这种情况下,您可以包装Start-Job
将启动它的命令,而无需将其附加到当前的 PowerShell 进程。例如:powershell -command "Start-Job { 'C:/Program Files (x86)/SEGGER/JLink/JLinkGDBServer.exe' -port 2331 -s -CPU Cortex-M -device STM32L476RG -endian little -speed 4000 -vd" }
using
Start-Job
基本上类似于&
在 Linux 中将 an 附加到命令的末尾,并且在这里应该给您相同的效果。
推荐阅读
- python - 用不同的颜色条绘制单个颜色图行并将它们可视化
- couchdb - 如何搜索字段包含与查询匹配的正则表达式的文档?
- r - 在R中制作邻接矩阵
- web-scraping - scrapy 在 imdb 关键字页面上不起作用
- pandas - 在 2 个时间序列数据帧上使用 corrwith()
- javascript - 无法映射构造的数组
- oracle - Oracle 的 SQL Developer 数据库导出结果只需 2 位数年
- javascript - 如何克隆 Javascript 类
- azure-data-factory - Azure 数据工厂 - 源数据集列的表达式
- android - 如何在android8.0以上未经许可的情况下获取gps数据?