【问题标题】:Run bash command in a windows batch file在 Windows 批处理文件中运行 bash 命令
【发布时间】:2013-09-25 11:34:29
【问题描述】:

是否可以在批处理脚本中运行 msys bash 命令?假设我有 a.bat 文件,因为我有我的 Windows 批处理命令,并且在一行中我将切换到 msys bash 来处理 msys指定的命令。像这样:

[...] 
batch commands 
[...]
C:\mingw\msys\1.0\bin\sh -l
mount 'C:\mingw\local32' /local32
[...] 
bash commands 
[...]

感谢您的帮助!

jb_

【问题讨论】:

    标签: bash shell batch-file cmd sh


    【解决方案1】:

    为什么不把所有的 shell 命令放在一个单独的文件中,然后从批处理文件中的一行中调用该脚本?

    C:\mingw\msys\1.0\bin\sh your-msys-script.sh
    

    【讨论】:

    • 是的,我之前尝试过,但后来我丢失了 msys 环境中的所有路径。也许我找到了一个解决方案: C:\mingw\msys\1.0\bin\sh -l your-msys-script.sh 也许它是我想要的。
    【解决方案2】:

    我现在找到了一个更好的方法:我使用 mintty 控制台,我认为它也可以与其他控制台一起使用。 mintty 在 msys/1.0/bin 下,有一个快捷方式我用参数指向 mintty:/bin/sh -l。现在我可以从批处理文件参数发送到该快捷方式。例如:mintty.lnk script.sh

    【讨论】:

      【解决方案3】:

      .SH 文件类似于 Windows 操作系统中的批处理文件,如果已激活基于 Linux 的 Windows 操作系统,则可以在 Windows 中运行。因此,要使用适用于 Linux 的 Windows 子系统在 Windows 10 中运行 .SH 文件,如果您的 Linux 子系统尚未安装,请执行以下操作:

      转到设置 > 更新和安全 > 对于开发者。检查开发人员模式单选按钮。然后搜索“Windows 功能”,选择“打开或关闭 Windows 功能”。 滚动找到 WSL,选中该框,然后安装它。完成后,必须重新启动才能完成安装请求的更改。按立即重新启动。 BASH 将在命令提示符和您的 PowerShell 中可用。

      执行 bash 脚本文件

      打开命令提示符并转到包含您的 .sh 文件的文件夹。 键入 Bash script-filename.sh 并按回车键。 它将执行脚本,并且根据文件,您应该会看到输出。

      我的 bash 文件 (state.sh) 包含以下脚本:

      作为文本:

      echo "Current state:"
      UPSTREAM=${1:-'@{u}'}
      LOCAL=$(git rev-parse @)
      REMOTE=$(git rev-parse "$UPSTREAM")
      BASE=$(git merge-base @ "$UPSTREAM")
      
      if [ $LOCAL = $REMOTE ]; then
      echo "Up-to-date"
      elif [ $LOCAL = $BASE ]; then
      echo "Need to pull"
      elif [ $REMOTE = $BASE ]; then
      echo "Need to push"
      else
      echo "Diverged"
      fi
      

      运行包含 bash 脚本文件的批处理文件

      您可以在下图中看到如何从批处理文件启动 bash 文件:

      @echo off
      START  /wait ./state.sh
      echo            . . . . . . . . . . . . . . . . . . . .
      echo               'The program executed successfully!'
      echo            . . . . . . . . . . . . . . . . . . . .
      

      现在您的批处理文件已准备好执行。

      希望这个答案能帮助那些寻求解决此类问题的人。

      【讨论】:

      • 不要将文字作为图片发布
      猜你喜欢
      • 1970-01-01
      • 2013-02-27
      • 2010-11-29
      • 1970-01-01
      • 2017-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多