如何编写一个批处理文件来打开一个msys shell,然后在shell中运行命令?

xriantvc  于 2023-01-09  发布在  Shell
关注(0)|答案(2)|浏览(288)

我试图自动化在Windows 10上构建ffmpeg的过程。我下面的指南:https://trac.ffmpeg.org/wiki/CompilationGuide/MSVC
当我手动操作时,一切都很好,但是我想写一个批处理文件,我可以运行它来自动完成整个过程。
构建需要我设置Visual Studio环境和MSYS环境。这是我遇到麻烦的地方,因为运行MSYS环境会打开一个新的shell。我想在打开MSYS shell后将configure/make/make install命令传递给它。
我已经尝试了以下解决方案:How to open a new shell in cmd,then run script in a new shell?
他们遇到的问题看起来和我的很相似,但是那里发布的解决方案对我不起作用。
下面是当前的bat文件:

call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\vcvars64.bat"
call "C:\workspace\windows\mingw-get\msys\1.0\msys.bat" start cmd.exe /k bscript
pause

和bscript:

./configure --enable-shared --toolchain=msvc --arch=amd64
make
make install

我试过各种各样的变化,比如:

call "C:\workspace\windows\mingw-get\msys\1.0\msys.bat" /k bscript
call "C:\workspace\windows\mingw-get\msys\1.0\msys.bat" bscript
start "C:\workspace\windows\mingw-get\msys\1.0\msys.bat" /k bscript
start "C:\workspace\windows\mingw-get\msys\1.0\msys.bat" bscript

我还尝试过将bscript代码保留在原始批处理文件中。
configure/make命令将在原始cmd窗口、新cmd窗口中运行,或者根本不运行。
有没有一种方法可以像这样将命令传递给MSYS shell?

h6my8fg2

h6my8fg21#

这可能被认为是一个有点晚的答案,但在精神上帮助那些谁沿着这里在未来:
MSYS2文档包含特定于启动MSYS2的页面:https://www.msys2.org/wiki/Launchers/从这里,我们了解到可以从Windows shell启动MSYS2环境,如下所示:

C:\\msys64\\usr\\bin\\env MSYSTEM=MSYS /usr/bin/bash -li

如果将其放在*.bat文件中并执行该脚本,将生成一个新的终端窗口,其中bash在MSYS2环境下运行。
该文档进一步说明了如何在该bash shell中运行一些东西:

C:\\msys64\\usr\\bin\\env MSYSTEM=MSYS /usr/bin/bash -lc python

上面的操作将再次生成一个新的终端窗口,加载MSYS2环境,启动bash,然后在该bash示例中运行python可执行文件。
从这里,直接运行您想要的程序(而不是python),或者创建一个bash脚本并将该脚本的参数传递给bash调用,以便在MSYS2环境中从Windows批处理文件执行常规bash脚本:)

i34xakig

i34xakig2#

我不知道你是否得到了结果。
你可以运行命令在窗口控制台:
C:\msys64\msys2_shell.cmd-明w32- shell 测试脚本
C:\管理系统64\管理系统2 shell 命令:MSYS发射棒

  • mingw32:arch,我使用32位
    测试脚本:usr/bin中启动脚本
    并且您需要在启动脚本中设置$PATH以启动命令

相关问题