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

如何在Git Bash的Shell脚本中调用CMD并向EXE传递输入?

Git Bash中运行Windows.exe调用工作流的解决方案

问题背景

你有一个自定义myprogram.exe,原Windows批处理通过(for %%i in (3 runs.txt) do @echo %%i)| myprogram.exe实现:先输出数字3,再读取runs.txt里的文件名列表,将这些内容通过管道传给exe完成计算。在Git Bash中手动输入cmd进入交互模式后执行命令再exit能正常工作,但写入bash脚本后仅启动cmd就停止,无法执行后续命令。

解决方案

方案1:通过cmd /c执行完整批处理命令

单独的cmd会启动交互式会话,脚本后续命令不会被传入会话执行。需要用cmd /c参数直接将批处理命令作为一次性任务执行:

cmd /c "(for %i in (3 runs.txt) do @echo %i)| myprogram.exe"

注意:这里用%i而非批处理里的%%i,因为cmd /c属于命令行模式,不是批文件模式

方案2:用Bash原生逻辑实现(更简洁)

完全避开cmd调用,直接用Bash命令组合出相同的输入流管道给exe:

{ echo 3; cat runs.txt; } | ./myprogram.exe

这个命令会先输出数字3,再读取runs.txt的所有内容,将两者合并后通过管道传递给myprogram.exe,效果和原批处理完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 18:42:32