PowerShell中Start-Process调用批处理文件立即退出无返回码或警告
问题解决方法
你的问题根源在于带空格的路径未正确用引号包裹,导致CMD无法识别完整的批处理文件路径,进而直接退出。以下是两种可靠的解决方式:
方式1:转义引号包裹路径
在PowerShell中用反引号``"`"转义双引号,将带空格的批处理路径括起来,确保CMD能解析完整路径:
Start-Process -FilePath $ENV:ComSpec -ArgumentList "/c `"D:\Program Files\Server\tools\createsite\createsite.bat`" -f D:\Stage\createsite.properties"
方式2:数组形式传递参数(推荐)
PowerShell的Start-Process推荐用数组传递参数,自动处理空格和参数解析问题,无需手动转义:
Start-Process -FilePath $ENV:ComSpec -ArgumentList "/c", "D:\Program Files\Server\tools\createsite\createsite.bat", "-f", "D:\Stage\createsite.properties"
额外:查看执行结果与退出码
如果需要在当前窗口运行、等待执行完成并获取退出码,添加-NoNewWindow、-Wait和-PassThru参数:
$proc = Start-Process -FilePath $ENV:ComSpec -ArgumentList "/c", "D:\Program Files\Server\tools\createsite\createsite.bat", "-f", "D:\Stage\createsite.properties" -NoNewWindow -Wait -PassThru $proc.ExitCode
内容的提问来源于stack exchange,提问作者tpcolson
相关产品推荐
相关产品推荐

