You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将执行exe并传入txt参数的bat文件转换为PowerShell脚本

BAT脚本转等效PowerShell脚本实现方案

首先给出兼容Windows PowerShell(5.1)和PowerShell 7+的通用实现脚本,和原BAT功能完全一致:

# 开启命令回显,对应原BAT的@echo on配置
Set-PSDebug -Trace 1

# 定义相关路径变量,方便后续修改维护
$cmdbdiagPath = "C:\Program Files\BMC Software\AtriumCore\cmdb\server64\bin\cmdbdiag.exe"
$inputParamPath = "C:\Program Files\BMC Software\ARSystem\diserver\data-integration\batch\CleanupInputs.txt"
$outputLogPath = "C:\Program Files\BMC Software\ARSystem\diserver\data-integration\batch\Snow_Output\DailyOutput.log"

# 读取输入参数文件内容传入目标程序,执行结果输出到日志文件
Get-Content -Path $inputParamPath | & $cmdbdiagPath -u test -p test -s remedyar -t 41900 | Out-File -FilePath $outputLogPath -Encoding Default

# 执行完成返回退出码0,和原BAT逻辑一致
exit 0

补充说明

  • 如果你使用的是PowerShell 7及以上版本,可以直接用原生输入输出重定向符,写法更贴近原BAT:
Set-PSDebug -Trace 1
& "C:\Program Files\BMC Software\AtriumCore\cmdb\server64\bin\cmdbdiag.exe" -u test -p test -s remedyar -t 41900 < "C:\Program Files\BMC Software\ARSystem\diserver\data-integration\batch\CleanupInputs.txt" > "C:\Program Files\BMC Software\ARSystem\diserver\data-integration\batch\Snow_Output\DailyOutput.log"
exit 0
  • 脚本中&是PowerShell的调用运算符,用于启动路径包含空格的可执行文件,避免路径空格被识别为参数分隔符。
  • Out-File的-Encoding参数设置为Default时,会使用系统默认编码,保证日志输出编码和原BAT执行效果一致,你可以根据实际需求调整为UTF8等其他编码。
  • 如果需要同时把程序的错误输出也写入日志,可在执行程序的命令末尾添加2>&1,效果等同于CMD中的错误输出重定向。

内容的提问来源于stack exchange,提问作者Subbu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 14:12:03